-Поиск по дневнику

Поиск сообщений в lj_ru_mysql

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 30.01.2006
Записей:
Комментариев:
Написано: 0


неожиданно медленно

Вторник, 21 Января 2020 г. 02:27 + в цитатник
Банальность, есть пара таблиц - группы и привязанные к ним элементы, примерно 2.5К групп, 3.3М элементов. Часть групп пустая.
--- группа ---
gr_id int
name varchar(64) utf8_general_ci

--- элемент ---
el_id int
group_id int
code varchar

Нужно получить все группы с количеством элементов в них.

SELECT groups.*, count(el_id) as cnt FROM groups left join elements using (gr_id) GROUP BY gr_id
Нормально, выполняется за 150 мс

SELECT groups.*, count(el_id) as cnt FROM groups left join elements using (gr_id) GROUP BY gr_id ORDER BY name
Выполняется за 50 _секунд_
Медленее в 300 с хреном раз.

SELECT * FROM
(
SELECT groups.*, count(el_id) as cnt FROM groups left join elements using (gr_id) GROUP BY gr_id
) as q
ORDER BY name
Выполняется за те же 50 секунд

$%^, ПОЧЕМУ?! Моя фантазия пасует.
Сортировка должна выполняться на полностью сформированной выборке.
Сортировка 2к5 строк не занимает минуту. Ни при каких раскладах.

https://ru-mysql.livejournal.com/295589.html

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку