Comments 10
«Также в MySQL нет рекурсии»
dev.mysql.com/doc/refman/8.0/en/with.html
mariadb.com/kb/en/library/with
dev.mysql.com/doc/refman/8.0/en/with.html
mariadb.com/kb/en/library/with
Рекурсия в нем совсем недавно появилась
Спасибо, статья написана 10 лет назад. Это моя проба пера на Habr.
Интересно насколько стало удобнее реализовывать тоже само, е но в mysql 8 с оконными функциями и рекурсивным запросами?
Статья много устаревшая. Я думал будут по существу вопросы и бдения. А мне на почту только и приходит — опечатка, опечатка, опечатка, и тому подобное, грустно.
Просто многим именно MySQL такие выкрутасы не оч нужны, кому нужны — те и так уже знают, т.к. довольно известные ситуации разобрали, впрочем весьма любопытно перечитать это было.
В закладки утащил.
В закладки утащил.
Статья хорошая, 10 лет назад внимательно читал бы примеры. Сейчас же, имхо, «старики» уже давно написали свои реализации, а новичкам есть решения из коробки.
По существу: утверждение «Красивого решения этой задачи одним запросом в MySQL нет.» устарело. LATERAL как раз и реализует, описанный ниже вариант, только в рамках одного запроса.
По существу: утверждение «Красивого решения этой задачи одним запросом в MySQL нет.» устарело. LATERAL как раз и реализует, описанный ниже вариант, только в рамках одного запроса.
Вот как эта задача решалась бы в СУБД с поддержкой аналитических функций:
SELECT group_id, order_id, value
FROM(
SELECT *, ROW_NUMBER()OVER(PARTITION BY group_id ORDER BY order_id) RowNum
FROM TestTable
)T
WHERE RowNum <= 2;
Однако оптимизатор MySQL ничего не знает о том, по каким правилам мы вычисляем поле RowNum. Ему придётся пронумеровать ВСЕ строки, и только потом отобрать нужные.
Теперь представьте, что у нас 1 миллион записей и 20 уникальных значений group_id. Т.е. чтобы выбрать 40 строк, MySQL будет вычислять значение RowNum для миллиона строк!
Фраза построена так, что создается впечатление, что только в MySQL будет идти перебор всех строк, а в других СУБД с поддержкой аналитических функций всё ok.
Разве row_number() в других СУБД не будет нумеровать все строки для указанного примера?
Спасибо Вам большое за статью!
Время от времени возвращаюсь, перечитываю и применяю :)
Вы пишете что статья много устаревшая - но пока мне не встречалась более интересная статья на эту тему. Могли бы Вы написать обновленную статью ?
Sign up to leave a comment.
MySQL — Использование переменных в запросе