Составной индекс FULLTEXT в MySQL
Я хотел бы сделать систему, которая позволяет искать сообщения пользователя, по конкретному пользователю. предположим, что у вас есть следующий стол
create table messages(
user_id int,
message nvarchar(500));
Итак, какой индекс мне следует использовать здесь, если я хочу найти все сообщения от пользователя 1, содержащие слово 'Foo».
простонеуникальный индексИдентификатор пользователяОн будет фильтровать только определенные пользовательские сообщения и затем полностью сканировать определенное слово.ПОЛНЫЙ ТЕКСТ индекс насообщение
Это позволит найти все сообщения от всех пользователей, а затем отфильтровать их по идентификатору, что представляется очень неэффективным в случае большого количества пользователей.comopound индекс по обоимИдентификатор пользователя а такжесообщение
Таким образом, полнотекстовое дерево индексов создается для каждого пользователя отдельно, поэтому их можно искать по отдельности. Во время запроса система фильтрует сообщения поЯ БЫ а затем выполняет текстовый поиск по оставшимся строкам в индексе.
НАСКОЛЬКО МНЕ ИЗВЕСТНО. Последнее невозможно. Итак, я предполагаю, что я буду использовать 1-й вариант, он будет работать лучше в случае нескольких тысяч пользователей?
И если у каждого будет ~ 100 сообщений, полная итерация выиграетт стоит много ресурсов?
Возможно, я могу включить имя пользователя в сообщение и использовать режим полнотекстового поиска BOOLEAN, но я думаю, что это будет медленнее, чем при использовании индексированногоИдентификатор пользователя.