Улучшение вашей логики SQL с помощью общих таблиц выражений

(Enhancing the Efficiency of SQL Logic with the Use of Common Table Expressions)

Упрощение записи, чтения, объяснения и поддержки логики

Фото Сэма Могадама Кхамсе на Unsplash

Бросить свою одежду в кучу и надеяться на лучшее, вероятно, не является стратегией долгосрочного управления вашей одеждой. Будет трудно:

SELECT носки FROM куча позже.

И вам определенно будет трудно:

SELECT рубашка FROM куча WHERE складки = false когда вам нужна рубашка.

Как и с управлением вашей одеждой, активное управление организацией логики SQL имеет явные преимущества.

В этой статье мы рассмотрим, как общие выражения для таблиц (CTE) могут улучшить вашу логику SQL. Шрифт-спагетти редко бывает хорошим кодом, и это так же верно для SQL, как и для любого языка программирования. В управлении данными и инженерии нет серебряных пуль. Однако аккуратная организация вашей логики и ее легкость в рассмотрении будут только помогать вам. Погрузимся!

Как выглядит общее выражение для таблицы?

Я иногда называю их WITH-клаузами. Почему? Давайте посмотрим на пример:

Я называю их WITH-инструкциями, потому что они всегда начинаются с … WITH.

На первый взгляд, насколько легко понять, что происходит? Есть три части:

  1. Запрос, определяющий “покупателей с высокой стоимостью”.
  2. Запрос, определяющий “новых покупателей”.
  3. Итоговый запрос, выполняющий объединение по условию между “покупателями с высокой стоимостью” и “новыми покупателями” и возвращающий набор результатов, содержащий только покупателей, присутствующих в обеих категориях.

Альтернативный подход

Прежде чем я узнал о общих выражениях для таблиц (CTE) / WITH-инструкциях, я мог бы подойти к этому запросу так: