Улучшение таблиц MySQL с помощью индексов

Я новичок в индексах в MySQL. Я знаю, мне, наверное, следовало начать это раньше, но большинство проектов были достаточно маленькими, чтобы мне это сойти с рук;)

Итак, теперь я тестирую это. Я выполнил свой тест, запустив EXPLAIN по запросу:

Query:

EXPLAIN SELECT a . *
FROM `tff__keywords2data` AS a
LEFT JOIN `tff__keywords` AS b ON a.keyword_id = b.id
WHERE (
b.keyword = 'dog' || b.keyword = 'black' || b.keyword = 'and' || b.keyword = 'white'
)
GROUP BY a.data_id
HAVING COUNT( a.data_id ) =4 

Сначала без индексов я получил следующие результаты:

enter image description here

Затем, с индексом по data_id и keyword_id, я получил следующее:

enter image description here

Итак, насколько я понимаю, количество строк, которые MySQL должен искать, увеличивается с 61k до 10k, что должно быть хорошо, верно?

Итак, мой вопрос: я прав? И есть ли еще что-нибудь, о чем я мог бы подумать, пытаясь оптимизировать?

ОБНОВЛЕНИЕ:

Более того, после некоторой помощи от AJ и Piskvor, указав на мою другую таблицу и ключевое слово столбца без индекса, я получил следующее:

enter image description here

Большое улучшение! Верно?

12
задан jamietelin 19 April 2011 в 14:35
поделиться