@KarambyG

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

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

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

И второй мини-вопрос.
Недавно узнал, что когда делаешь селект к бд, например WHERE id=20, то БД не ищет эту запись перебором начиная с id=1, а обращается к id=20 сразу. Это для меня был шок. Как оно находит запись сразу? Он же не нострадамус)) Порекомендуйте кто статейку, как работает бд на этот счёт? А то в в инете нахожу только книги по 700 страниц :((
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 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, а первичный ключ является сам по себе уникальным индексом.
Отдельно создавать для него индекс бессмысленно.
Ответ написан
Ваш ответ на вопрос

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

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