Я пытаюсь оптимизировать этот запрос MySQL, используя EXPLAIN. Может кто-нибудь помочь мне здесь?
EXPLAIN SELECT * FROM keyword
WHERE keyword LIKE "panasonic%"
AND keyword != "panasonic"
AND price < 3230 AND price > 3370
ORDER BY price DESC
LIMIT 99
В основном я хочу узнать ключевые слова, которые начинаются с "некоторого ключевого слова", но не совпадают точно с ним, и цена которого составляет , а не в определенном диапазоне. И, о, я должен получить их в порядке убывания цены (что и вызывает проблему).
Объяснить вывод:
id: 1
select_type: SIMPLE
table: keyword
type: range
possible_keys: PRIMARY, keyword_price, price_keyword
key: keyword_price
key_len: 765
ref: NULL
rows: 24
Extra: Using where; Using filesort
Индексы
Key_name: column_names
PRIMARY: keyword
keyword_price: keyword, price
price_keyword: price, keyword
Теперь, если я дам подсказку об использовании индекса и изменим запрос на
EXPLAIN SELECT * FROM keyword USE INDEX (price_keyword)
WHERE keyword LIKE "panasonic%"
AND keyword != "panasonic"
AND price < 3230 AND price > 3370
ORDER BY price DESC
LIMIT 99
Объяснить вывод изменений на
id: 1
select_type: SIMPLE
table: keyword
type: index
possible_keys: price_keyword
key: price_keyword
key_len: 790
ref: NULL
rows: 1043044 (WHAT THE ????)
Extra: Using where
Вывод объяснения показывает, что количество строк увеличилось экспоненциально, но «Использование сортировки файлов» прекратилось.
Какой запрос лучше в этом случае? Может ли этот столбец "проверенные строки" быть обманчивым?
Привет