Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Написал обзор возможных решений в один запрос, см Выбрать несколько записей из каждой группы.
Ошибки, замечания, предложения?
-) Неожиданно, хорошую эффективность показал трюк с group_concat.
-) Была надежда на with recursive, но из-за ограничений (ссылка на cte только во from; нельзя group by, order by, limit) получается удручающая производительность. Не стал включать в список.
Неактивен
Спасибо за проделанную работу!
Особенно заинтересовало использование lateral.
Неактивен
Спасибо! Очень полный обзор. Думаю, что with recursive стоит добавить для академической полноты. Статью можно добавить в FAQ.
Неактивен
vasya, отличная статья!
А ты постил на bugs.mysql.com про 6-й пункт (lateral)?
Интересно, что они думают.
Неактивен
deadka, хорошая мысль, добавил
http://bugs.mysql.com/94903
Неактивен
Будем подождать реакции!
Неактивен
Почему JSON файл сохранен как SQL?
https://sqlinfo.ru/forum/attachment.php?item=671
Неактивен
на автопилоте (когда писал dumpfile, вероятно по аналогии с mysqldump, который делает sql файл) указал такое расширение
Неактивен
Гильям Бишот рекомендовал расширить выражение сортировки:
вместо
order by date_added desc limit 3
указать
order by user_id desc, date_added desc limit 3
Тогда MySQL будет использовать индекс. Новый вариант выполняется в 3 раза быстрее.
Внес дополнения в статью.
На баг репорте ленятся (запрашивают доп информацию вместо того, чтобы воспроизвести у себя).
Неактивен
Запросить доп. информацию - работа сервисного инженера ресепшена. Bishot все понял правильно, так как знает про внутреннее устройство.
Неактивен
Имхо, это должно быть в случае, когда сотрудник не может воспроизвести проблему. Ответы в стиле "попробуйте force index" или "другие подсказки оптимизатору, описанные в нашей документации" мне кажутся не уместными.
Тут, конечно, ещё проблема в том, что я пишу на "албанском" английском из-за чего может возникать недопонимание.
Насколько легче общаться когда с той стороны человек с типичной англо-саксонской фамилией типа "петренко"
Проблема оказалась не в реализации lateral, а шире - оптимизатор не трактует внешнюю ссылку как константу. Странно, что раньше это не обнаружили.
Неактивен
Для второго метода интересна проблема с ONLY_FULL_GROUP_BY.
Простое перечисление всех полей в части group by в разы увеличивает время выполнения запроса.
А что получится по производительности, если в части FROM вместо * перечислить все поля с аггрегирующей функцией, например MIN()?
Неактивен
Страниц: 1