У меня есть простой внутренний запрос соединения следующим образом:
SELECT DISTINCT t.guid, t.post_title
FROM wph3_posts t
INNER JOIN wph3_postmeta tr
ON t.ID = tr.post_id AND tr.meta_value LIKE '%>Washing</a>%' AND t.post_status = 'Publish'
ORDER BY t.post_date DESC LIMIT 3
Когда я делаю объяснение MySQL, я получаю следующий вывод:
|id|select type|table|type|possible_key|key|key_len|ref|rows|extra|
:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|
|1|SIMPLE|t|ALL|PRIMARY, myKey|NULL|NULL|NULL|29859|Using where; Using temporary; Using filesort|
|1|SIMPLE|tr|ref|post_id|post_id|8|y345435_wp946.t.ID|6|Using where; Distinct|
Индекс "myKey" был простосоздан и является индексом wph3_posts с (ID, post_status)
Ключ все еще игнорируется и отображается как NULL для используемых ключей.Для выполнения запроса требуется примерно 1.4230 , который я действительно хотел бы сузить.
РЕДАКТИРОВАТЬ: После замены порядка ключей: wph3_posts с (post_status, ID) Затем я могу получить myKey для использования в качестве индекса, но, к сожалению, это мало влияет на производительность.