2013-03-12 3 views
1

Я пытаюсь следующий запрос:Slow MySQL запросов на таблице 2 миллиона записей

SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (2167635,2167638,2182793,2182800,2195791,2195809,2208830,2208837,2212480,2212486) 

в wp_postmeta таблице 2 млн. Использование объяснения показывает, что я использую индекс isint post_id. Но для загрузки требуется 5 секунд (что довольно неприемлемо).

Любые идеи о том, как оптимизировать этот запрос ?.

Заранее спасибо.

+0

Странно, что он работает так медленно. Вы можете попробовать создать индекс покрытия с этими тремя полями в нем. – Tom

+3

Можете ли вы опубликовать вывод EXPLAIN по этому запросу? – hank

+0

1 SIMPLE wp_postmeta range post_id post_id 8 NULL 138 Использование где – KillDash9

ответ

0

Я думаю, вы должны добавить индекс в столбец post_id, потому что результат будет быстрее, значения будут проиндексированы.

ALTER TABLE `wp_postmeta` ADD INDEX `post_id` (`post_id`) 
+0

Индекс post_id уже на месте :( – KillDash9

+0

Вы имеете в виду уже проиндексирован? –

+0

Да, уже проиндексирован. – KillDash9

Смежные вопросы