Рефакторинг SQL

Существуют ли какие-либо формальные методы для рефакторинга SQL, похожие на этот список здесь, который предназначен для кода?

В настоящее время я работаю над массивным запросом для конкретного отчета, и я уверен, что здесь есть много возможностей для рефакторинга, которые я просто спотыкаюсь пополам.

Ответы

Ответ 1

Я никогда не видел исчерпывающего списка, как образец, который вы предоставили.

Самый эффективный способ рефакторинга sql, который я видел, - использовать с выражением. Это позволяет вам разбить sql на управляемые части, которые часто можно тестировать самостоятельно. Кроме того, он позволяет повторно использовать результаты запроса, иногда используя временную таблицу системы. Это стоит того, чтобы исследовать.

Здесь - более интересный пример.

Ответ 2

Существует книга по теме: " Рефакторинг баз данных". Я не читал его, но он получил 4,5/5 звезд на Amazon и в соавторстве со Скоттом Амблером, которые оба являются хорошими признаками.

Ответ 3

Не то, что я когда-либо находил. Я в основном выполнял работу SQL Server, и стандартные методы:

  • Параметрирование жестко заданных значений, которые могут быть изменены (поэтому запрос может быть кэширован)
  • Просмотрите план выполнения, проверьте, где находятся большие монстры, и попробуйте изменить их.
  • Мастер настройки индексов (но будьте осторожны, вы не вызываете хаос в других местах от любых изменений, которые вы делаете для этого)

Если вы все еще застряли, многие отчеты не зависят от 100% живых данных - попробуйте предварительно рассчитать части данных (или весь лот) по расписанию, например, в течение ночи.