@HocReal

Почему запрос стал работать в разы дольше?

После обновления Mysql на версию 5.5.53 стали в разы тормозить все запросы на выборку,
ниже пример. Скорее всего проблема в неверном определении оптимизатором порядка выполнения запроса, но как это победить? Судя по slow log сканируется вся таблица:
# Query_time: 5.574717 Lock_time: 0.000030 Rows_sent: 1 Rows_examined: 195589

Медленный запрос
select 
	t.id,
	t.name,
	t2.name
from 
	table t
	left join table2 u on t.user = t2.id
where 
	t.data = 1
	and t.is_deleted = 0 
order by 
	t.d_mod desc 
limit 20;


Если убираем order by и limit, то все работает быстро

select 
	t.id,
	t.name,
	t2.name
from 
	table t
	left join table2 u on t.user = t2.id
where 
	t.data = 1
	and t.is_deleted = 0;
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
gobananas
@gobananas
finishhim.ru
Если вы уверены что дело в неправильном выборе индекса оптимизатором можно MySQL вручную указать какой конкретно индекс использовать:
SELECT * FROM `table` USE INDEX (name_index)
На 5.5 радикальных изменений не было, это вот 5.5 -> 5.6 с репликацией проблемы, поэтом многие сидят на 5.5
Можно попробовать индексы пересоздать если индексов и данных не много.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы