Вроде всё ок. Но недавно узнал что есть тип связей многие ко многим. Где в самой бд эту связь нужно создавать. Возникает вопрос, зачем в бд указывать эти связи, если и без них этот join норм работает?
Звучит, как будто subscribers - и есть связь многие-ко-многим (между сущностями users и groups).
Недавно узнал, что когда делаешь селект к бд, например WHERE id=20, то БД не ищет эту запись перебором начиная с id=1, а обращается к id=20 сразу. Это для меня был шок. Как оно находит запись сразу?
Оно и не находит сразу. Если нет индекса, то будет полный перебор (только не начиная с id=1, id=2, а скорее id=4324, id=88, id=281... - в том порядке, как они валяются в таблице).
Это можно сравнить с библиотекой: если книги свалены в кучу, библиотекарь будет вынужден перебирать их по одной, пока не найдет нужную, допустим, "Войну и мир". А если у него есть каталог, он быстро найдет ящик с буквой "В", в нем отсек "ВЛ-ВР", в нем карточку "Войны и мира" и в ней уже стойку, полку и ряд, где искать книгу.