Система подписчиков MYSQL: индексирование таблицы подписчиков

Я работаю над приложением, которое включает в себя следующие, как Twitter & Instagram. У меня есть вопрос относительно индексации таблицы подписчиков. Возьмите мои две таблицы MYSQL для ex.

users
- user_id
- username
...

followers
- id
- user_id
- follower_id
...
index(user_id,follower_id)

Я читал об индексах здесь: http://www.slideshare.net/billkarwin/how-to-design-indexes-really.
Насколько я понимаю, индексы отсортированы по крайнему левому столбцу в указанном индексе. Так что в этом случае его user_id и follower_id разбросаны по всей таблице?

*followers Table
id    user_id    follower_id
————————————————————--------
1        5          6
2        5          8
3        5          11
4        7          6

Поэтому, если я выполню простой запрос, приведенный ниже, он должен быть эффективным и позволит мне получать людей, за которыми следует пользователь x:

SELECT * FROM followers WHERE user_id=5

Однако что произойдет, если мне понадобятся люди, которые следят за кем-то? Например:

SELECT * FROM followers WHERE follower_id = 6

Насколько я понимаю, follower_id будет отсортирован только по порядку после столбца user_id. Следовательно, это происходит по всей таблице и вся таблица должна быть проверена?

Каков наилучший способ справиться с этим и что я неправильно понимаю?

0

Решение

Увидеть Вот.

Из вашего примера, этот пункт выделяется:

MySQL использует индексы для этих операций:

Чтобы быстро найти строки, соответствующие предложению WHERE.

Я бы индексировал оба user_id а также follower_id, с нормальным типом индекса.

Кроме того, не забудьте также прочитать об индексировании по нескольким столбцам, так как это может пригодиться для вашего сценария.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]