2012-07-02 4 views
0

Я новичок в оптимизации и индексировании mysql, но в своем новом проекте я попробую больше использовать индексацию и лучше понять.Использовать индексирование на внешнем соединении и group_concat

Но теперь я борюсь с объединениями и group_concat и индексированием. Я не могу заставить его работать правильно. У меня установлен индекс на тегах.item_id и items.id имеют первичный индекс.

Что я могу видеть из моего запроса EXPLAIN, он не использует какой-либо ИНДЕКС для этого запроса.

EXPLAIN 
SELECT i.id, i.title, i.content, GROUP_CONCAT(DISTINCT t.name SEPARATOR ",") as tags 
FROM items as i 
LEFT OUTER JOIN tags as t ON t.item_id = i.id 
WHERE i.id = 103 GROUP BY i.id 

Результат:

1 SIMPLE i const PRIMARY PRIMARY 4 const 1 
1 SIMPLE t ref item_id item_id 5 const 4 

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

+0

Опубликовать план! – Samson

ответ

0

Вы не можете создать индекс для функции в MySql. Решение будет хранить теги в другом столбце таблицы и индексировать его. Также индекс t.item_id! для более подробных разъяснений go here

+0

Okey, но когда я удаляю GROUP_CONCAT и просто использую t.name, я получаю тот же результат без индексации. – Rond

+0

показать запрос sql – Samson

+0

Отметьте мой первый пост. – Rond

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