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 т. строк? или что то иное?
Выполняется ли вложенный селект каждый раз для каждой строчки? или нет?
Как понять «из-за чего» в запросе происходит такая медленная выборка?
Сорри не могу выложить целиком запрос :(
Попробуйте использовать инструмент profiler, статья была даже тут: habrahabr.ru/blogs/mysql/70435/
Также по опыту подозреваю, что много времени может тратиться на group и order.