Помогите оптимизировать запрос SQL

D
На сайте с 28.06.2008
Offline
1101
516

Сам запрос выполняется 1,7-2 сек.

SELECT ROUND(professions.average, 1)
AS rate, master.category_id, master.shortname, 0
AS count, t2.morpher
AS name, CONCAT_WS('-', master.id, master.alias)
AS item_alias, CONCAT_WS('-', t2.id, t2.alias)
AS category_alias
FROM x_spec_items AS master
INNER JOIN x_spec_categories AS t2 ON master.category_id = t2.id
INNER JOIN x_spec_sections AS t3 ON master.section_id = t3.id
LEFT JOIN x_spec_professions AS professions ON master.id = professions.item_id
WHERE master.section_id = '160'
GROUP BY master.id
ORDER BY master.average ASC, t2.name ASC

Эксплейн этого запроса показывает что оптимизировать надо t2, но там всего 128 строк, что там можно оптимизировать?

png 169306.png
dma84
На сайте с 21.04.2009
Offline
168
#1

Навскидку, у вас при джоине t2 не используется индекс, так же идёт сортировка по t2.name, нужно копать в эту сторону.

D
На сайте с 28.06.2008
Offline
1101
#2

То что индекс не используется это я вижу, но в той таблице есть только первичный индекс да ис трок там всего 128. Я пробовал добавлять индекс на поле morpher - это ничего не изменило.

А сортировка по t2.name - что тут можно оптимизировать?

edogs software
На сайте с 15.12.2005
Offline
775
#3

Запрос у Вас похож на запрос из предыдущего топика /ru/forum/979388 и у нас будет почти тот же ответ (гляньте в том топике), только вместо айтем соответственно мастер.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий