SELECT * FROM articles WHERE title LIKE '%query%' AND user_id=123
Mysql WHERE заявление приоритет при выполнении
user_id
столбца является индексом. Как Mysql выполнит этот запрос? Я думаю, что LIKE имеют самый низкий приоритет, не так ли?
спасибо.
SELECT * FROM articles WHERE title LIKE '%query%' AND user_id=123
Mysql WHERE заявление приоритет при выполнении
user_id
столбца является индексом. Как Mysql выполнит этот запрос? Я думаю, что LIKE имеют самый низкий приоритет, не так ли?
спасибо.
EXPLAIN SELECT * FROM articles WHERE title LIKE '%query%' AND user_id=123
Что скажут все это :)
MySQL почти наверняка использовать индекс user_id.
Для запросов в целом оптимизатор разработает возможные пути доступа и использует некоторые предварительно вычисленные статистические данные для содержимого таблицы для оценки, которая будет самой быстрой.
Например, если ваши articles
таблицы также имели столбец даты article_date
, который был проиндексирован и вы выполнили запрос с предикатами на обоих user_id
и article_date
. Затем MySQL должен будет оценить, какой индекс будет самым быстрым, чтобы выбрать нужные строки.
Если в тысячах статей в день много разных пользователей, тогда может быть лучше указатель user_id. Но если есть только несколько статей в день, но большинство пользователей публикуют большое количество статей, вместо этого может быть быстрее использовать индекс статьи.
Использование объяснения-синтаксиса – Codler