Добрый день.
В Wordpress имеется таблица с данными о записях вида
meta_id | post_id | meta_key | meta_value |
---|
1 | | post_views | 100500 |
... | ... | ... | ... |
100000 | 34234 | post_views | 500100 |
meta_value имеет тип LONGTEXT.
В запросе требуется выбрать данные о записи с meta_key = 'post_views' и отсортировать по meta_value. Что-то вроде
SELECT post_id, meta_value FROM wp_postmeta WHERE meta_key = 'post_views' ORDER BY CAST(wp_postmeta.meta_value as DECIMAL(10,5)) DESC LIMIT 0, 5
Если записей будет много, то подобные запросы будут сильно "нагибать" сервер. Гугл подсказывает, что следует добавить индекс наподобие `key_value` (`meta_key`, `meta_value`(20)) и все будет ок.
Но EXPLAIN говорит, что при сортировке по meta_value все равно используется filesort среди всех записей с определенным meta_key. Так как же правильно проиндексировать поле meta_value таким образом, чтобы не использовался этот несчастный filesort?