TGViewer
Dataism Dataism @data1sm · 3.83K subscribers
Post #217 534
SQL style.pdf100.6 KB
SELECT style FROM SQL. Часть 2

Продолжаю пост про best practices по написанию sql кода (+ собрала в единый файл основные принципы)


📌1. Прописывайте inner/cross join в явном виде
Плохо

select a, b from empl, depart

Хорошо

SELECT a, b FROM empl
CROSS JOIN depart

📌2. Старайтесь не использовать типы данных REAL и FLOAT. В SQL имеются гибкие типы данных NUMERIC и DECIMAL, лишенные ошибок округления, присущих числам с плавающей точкой.

📌3. Избегайте лишних скобок.

📌4. Ищите наиболее компактную форму.
- Используйте предикаты BETWEEN, а не AND
- Используйте предикаты IN(), а не OR. НО! будьте аккуратны с null-значениями.

📌5. Избегайте union.
UNION очень плохо поддается оптимизации, поскольку в них требуется отбрасывать избыточные дубликаты, они заставляют большинство ядер SQL производить сортировку, прежде чем представить результаты пользователю. Лучше заменить на union all.

📌6. Указывайте из какой таблицы вы берет поле в явном виде.
Если у вас джоин для нескольких таблиц, то пропишите для удобства откуда именно тянется ваша колонка. Но не перебарщивайте: для простого селекта такое делать не нужно.
Плохо

SELECT
companies.id,
companies.name
FROM companies

Хорошо

SELECT
users.email,
sum(charges.amount) as total_revenue
FROM users
INNER JOIN charges ON users.id = charges.user_id

📌7. Всегда переименовывайте свои агрегирующие функции.
Плохо

SELECT
count(*)
FROM users

Хорошо

SELECT
count(*) as total_users
FROM users

📌8. Разделяйте case/when statements.
Каждый when должен быть на отдельной строке и ниже по уровню, чем case.
Хорошо

CASE
WHEN event_name = 'viewed_homepage' THEN 'Homepage'
ELSE 'Other'
END


📌9. Используйте WHERE 1=1.
Такая конструкция, как WHERE 1=1 в SQL, облегчает добавление дополнительных условий с помощью AND.

Если вас увлекла эта тема, то советую прочитать книгу SQL Programming Style - Joe Celko:
https://doc.lagout.org/programmation/Databases/mssql/SQL%20Programming%20Style%20-%20Apr%202005.pdf

#трудовыебудни
  • 🔥 7
  • 👍 2
More from @data1sm
  1. Sep 23, 2026Карьерные консультанты На фоне кризиса на рынке труда, естественно, активизировались ✨карь…
  2. Sep 21, 2026У команды Trisigma снова намечается крутой митап про A/B-культуру На этот раз встреча прой…
  3. Sep 9, 2026Айтишник из Платы запилил рилс со сравнением Платы и Т-Банка и его уволили, хотя в своем р…
  4. Sep 8, 2026Статзначимый подкаст Послушала на выходных подкаст от hh team «Тимлиды в аналитике: как ру…
  5. Sep 1, 2026Буквально вчера на клубе обсуждали будущее приложений и вообще взаимодействия с продуктами…
  6. Aug 31, 2026Бедная Анастасия Какие ранимые в менеджменте Яндекса
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →