SELECT style FROM SQL
Бесконечно долго можно смотреть на 3 вещи: огонь, воду и как аналитики спорят, куда ставить запятую в запросе.
В общем, вряд ли вы найдете двух людей, которые отформатировали бы даже самый простой SQL-запрос одинаково.
Но важно понимать, что форматирование - это необходимая вещь.
Поэтому вот небольшой список best practices по код-стайлу.
📌1. SELECT * FROM - антипаттерн.
- таблицы меняются и запрос, содержащий подобную конструкцию, может сломаться.
- плохо читаемый код запроса, непонятно какие поля выбираются для дальнейшей работы.
- вопрос производительности. Хорошая статья на эту тему.
📌2. Используйте СTE (с понятным псевдонимом).
- повышение читаемости кода
- дешевле выполнить cte один раз, кэшировать данные, а затем просто повторно использовать набор результатов по мере необходимости в своем коде.
📌3. Используйте комментарии.
Конечно, в идеальном мире, код должен быть самодокументируемым, но если есть места, которые неочевидны, то лучше их прокомментировать.
Например, у вас встретился запрос, вот такого вида:
и вот сиди и думай, баг это или фича. Ни одного комментария нет о том, почему внезапно из всего словаря вытащили только инфу по менеджеру только из одного города.
📌4. Избегайте подсказок оптимизатору.
Например, вы увидели, что ваши данные со скошенным статистическим распределением и на радостях впихнули в запрос хинт, чтобы явно указать оптимизатору что делать. Но по мере роста объема данных это распределение может измениться и тогда ваша подсказка будет уже помехой.
Хинт (hint) – это указание оптимизатору запросов, которое переопределяет его поведение по умолчанию на время выполнения SQL запроса.
📌5. Именование колонок должно быть в snake_case стиле.
Хорошо:
Далее идут более спорные пункты. Да начнутся голодные игры.
📌6. Одиночное join условие должно быть на той же строке что и сам join.
Хорошо:
📌7. Делайте группировку по имени поля, а не по номеру.
Плохо:
Хорошо:
📌8. Записывайте прописными буквами зарезервированные слова.
Плохо:
Хорошо:
Лично мне проще читать код, когда вижу upper case, но в автоматизированных форматтерах это можно регулировать.
📌9. Запятые в начале vs запятые в конце (commas-first/last) + каждое поле в новой строке
Мне лично нравится ставить запятую в конце.
Плохо:
Хорошо:
📌10. Выравнивание по левому краю.
Даже не знаю, что вызывает больше споров: выравнивание или запятые. Я выравниваюсь по левому краю.
Заключение:
В vs code есть различные форматтеры, так что установите себе что-то подобное и жизнь станет проще.
либо в DataGrip/DBeaver настройте нужное.
Полный гайд с лучшими практиками можно скачать тут.
Но хочу все же подчеркнуть, что какой-то единой истины нет в плане форматирования.
А на какой вы стороне: commas-first или last?
Пишите в комментариях 👇