@KarambyG

Нужно ли использовать связи между таблицами mySQL?

Предположим, у меня есть таблица groups, и таблица subscribers(тут хранятся id юзеров, которые вступили в сообщества - groups). Тоесть я селекчу таблицу groups, делаю join - тоесть присоединяю таблицу subscribes по groups.id=subscribes.id_group. Ну и таким образом понимаю, подписан ли юзер на то или иное сообщество, или нет.

Вроде всё ок. Но недавно узнал что есть тип связей многие ко многим. Где в самой бд эту связь нужно создавать. Возникает вопрос, зачем в бд указывать эти связи, если и без них этот join норм работает?

И второй мини-вопрос.
Недавно узнал, что когда делаешь селект к бд, например WHERE id=20, то БД не ищет эту запись перебором начиная с id=1, а обращается к id=20 сразу. Это для меня был шок. Как оно находит запись сразу? Он же не нострадамус)) Порекомендуйте кто статейку, как работает бд на этот счёт? А то в в инете нахожу только книги по 700 страниц :((
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 2
@galaxy
Вроде всё ок. Но недавно узнал что есть тип связей многие ко многим. Где в самой бд эту связь нужно создавать. Возникает вопрос, зачем в бд указывать эти связи, если и без них этот join норм работает?

Звучит, как будто subscribers - и есть связь многие-ко-многим (между сущностями users и groups).

Недавно узнал, что когда делаешь селект к бд, например WHERE id=20, то БД не ищет эту запись перебором начиная с id=1, а обращается к id=20 сразу. Это для меня был шок. Как оно находит запись сразу?

Оно и не находит сразу. Если нет индекса, то будет полный перебор (только не начиная с id=1, id=2, а скорее id=4324, id=88, id=281... - в том порядке, как они валяются в таблице).
Это можно сравнить с библиотекой: если книги свалены в кучу, библиотекарь будет вынужден перебирать их по одной, пока не найдет нужную, допустим, "Войну и мир". А если у него есть каталог, он быстро найдет ящик с буквой "В", в нем отсек "ВЛ-ВР", в нем карточку "Войны и мира" и в ней уже стойку, полку и ряд, где искать книгу.
Ответ написан
SagePtr
@SagePtr
Еда - это святое
id у тебя вероятнее всего PRIMARY KEY, а первичный ключ является сам по себе уникальным индексом.
Отдельно создавать для него индекс бессмысленно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы