Как оптимизировать простой запрос select * from table?
Есть запрос
select ot.* from `my_table` as ot where ot.field01='11' and ((ot.field02='22' and ot.field03='33') or ot.field04='44' or ot.field05='55') order by ot.field06 desc limit 0, 20
Но он выполняется 0.02, а хочу что-бы он выполнятся 0.002.
Подскажите, пожалуйста, как это можно сделать? Индексы стоят на каждом из полей и поставил для всей группы.
в таком простом запросе выполнение не замедляется вообще, расход памяти да, но дело даже не в этом.
Представьте что вы поддерживаете чужой продукт спустя 100500 лет, открываете его а там запрос из десятка джоинов с пачкой вложенных запросов, джины разные и еще пара тройка самописных функций и везде стоят *. Мало того что памяти это все дело будет жрать на больших (в ширину) таблицаъ немеряно, а вам еще предстоит увлекательнейший квест по разбору этого запроса.
Да ис амому приятно когда открываешь чей нить такое, сразу все видно и понятно
select sum(mt.order_sum) as month_sum,
count(*) as month_cnt,
ifnull(dt.day_cnt,0) as day_cnt,
ifnull(dt.day_sum,0) as day_sum,
mt.manager_lastname,
mt.manager_id
from ma_client_orders as mt
left join (select sum(order_sum) as day_sum,
count(*) as day_cnt,
manager_lastname
from ma_client_orders
where is_deleted=false and
order_date=curdate()
group by manager_lastname) as dt
on mt.manager_lastname=dt.manager_lastname
where is_deleted=false and
order_date>curdate() - interval dayofmonth(curdate()) day
group by manager_lastname
order by day_sum desc,month_sum desc