Как пишутся сложные SQL запросы?

Когда требуется выборка из нескольких десятков связанных страниц? Даже при использовании нескольких таблиц, запрос с кучей вложенных JOIN со скобками выглядит не читаемым.
  • Вопрос задан
  • 2174 просмотра
Пригласить эксперта
Ответы на вопрос 4
@mletov
Разнесите запрос на представления, временные таблицы, хранимые функции, возвращающие табличное значения и т д.

В общем, попытайтесь создать некоторую архитектуру. Ведь наверняка подзапросы из этого сложного запроса используются где-то еще. Убьете двух зайцев: и читабельность будет выше, и повторное использование кода оптимизировано.
Ответ написан
Комментировать
@ruslan_zasukhin
Форматирование конечно хорошо, но человек пишет что у него 10 таблиц в запросе?
Интересно было бы посмотреть что за запрос такой

В нашей Valentina DB мы развиваем Object-Relational модель, и кроме таблиц у нас есть Links (связи). Движок умный в том плане что если между двумя таблицами связь однозначна, то можно не указывать явно join условие. Запросы становятся гораздо проще и читабельней.

Кроме того есть BinaryLink MM, которая позволяет также уменьшить количество таблиц, заменяя ММ таблицу-связь.
Ответ написан
Комментировать
NYMEZIDE
@NYMEZIDE
резюме - ivanfilatov.ru
а проблема то в чем? в том что вы хотите видеть в SQL запросе художественный текст со смыслом? )
с опытом будете видеть и понимать.

а вообще форматирование сделайте - будет все читаемо и наглядно.
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Форматирование и комментарии никто не отменял.
В совокупности с внятным именованием таблиц, их алиасов и полей - это дает возможность одним взглядом понимать что это за запрос и зачем он.

Ну и да, cte неплохо помогают не только оптимизатору, но и чтению кода.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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