SQL query [MySQL] оптимиация?

Всем привет, у меня наверно два вопросы

1. где можно почитать о том как реально выполняются запросы в Мускл? речь о том что б понять какие места узкие, хочу понять в каком порядке и по каким правилам все происходит

К примеру если у меня есть запрос вида

SELECT DISTINCT s.c_id as c_id ,( SELECT IF (s0.period_id=1, s0.sum*180, IF (s0.period_id=2, s0.sum*4.5, IF (s0.period_id=3, s0.sum, IF (s0.period_id=4, s0.sum/12, 0) ) ) ) as monthly ...


а далее идет джоин с 10тью! таблицами и большой where в конце с группировкой и ордером

а эксплейн показывает что

id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY s ALL c_id,sum_idx NULL NULL NULL 117108 Using where; Using temporary; Using filesort
...


и потом еще 10 строчек. в 3х последующих связь типа eq_ref
а в остальных ref

из мануала говорится что
eq_ref
Для каждой комбинации строк из предыдущих таблиц будет cчитываться одна строка из этой таблицы


комбинацией строк в моем случае является 117 т. строк? или что то иное?

Выполняется ли вложенный селект каждый раз для каждой строчки? или нет?
Как понять «из-за чего» в запросе происходит такая медленная выборка?
Сорри не могу выложить целиком запрос :(
  • Вопрос задан
  • 2972 просмотра
Пригласить эксперта
Ответы на вопрос 3
@videns
Попробуйте использовать инструмент profiler, статья была даже тут:
habrahabr.ru/blogs/mysql/70435/
Также по опыту подозреваю, что много времени может тратиться на group и order.
Ответ написан
Комментировать
По поводу оптимизации советую прочитать (и выучить) справочное руководство — www.codenet.ru/db/mysql5/manual.ru_MySQL_Optimisation.php
Ответ написан
@himik
написать перед запросом EXPLAIN, не?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы