Задать вопрос

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 просмотра
Подписаться 8 Оценить Комментировать
Ответ пользователя himik К ответам на вопрос (3)
@himik
написать перед запросом EXPLAIN, не?
Ответ написан