3 Советы по написанию SQL для повышения производительности

Oracle спонсировал этот пост.

Если вы разработчик базы данных, администратор базы данных или аналитик данных, написание SQL для получения данных в базах данных и за его пределами является ключевой частью вашей работы. Делая это быстро и эффективно повышает вашу производительность. И наоборот, работа с запутанным беспорядком утверждений и данных заставляет вас застрять.

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

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

Структурные запросы четко

Большие операторы SQL могут быть трудно читать и отлаживать. CTE, aka с пунктом, позволяйте вам разбить их на более мелкие части.

CTE называются подразделениями, которые поступают в верхней части выбранных операторов. Вы получаете доступ к этим подчинкам, как обычные таблицы позже в запросе.

Это приносит несколько преимуществ:

  • Вы можете построить запрос бит-бит.
  • Вы можете дать каждому CTE значимое имя.
  • Вы можете проверить результаты каждого CTE.

Например, тренажерный зал Oracle Dev предлагает бесплатные викторины, тренировки и занятия, чтобы помочь вам изучить SQL. Каждое из этих действий имеет свои собственные таблицы. Сочетание всего этого в одном запросе, чтобы сообщить о всех действиях, является сложной задачей.

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

С via_totals как (…) выберите * из quiz_totals 12 с quiz_totals как (…) выберите * из quiz_totals

Затем добавьте итоги тренировок и убедитесь, что они верны:

с vaiz_totals as (…), trabout_totals как (…) выберите * из тренировок_totals 123 с Quiz_totals как (…), trabout_totals как (…) Выберите * из тренировок_totals

Повторите это для итоги классов и объедините результаты каждого CTE, чтобы получить все итоги, например, так:

с Quiz_totals как (…), trabout_totals как (…), class_totals as (…), all_totals как (select * from quiz_totals in Union All Select * From Trabout_totals Union All * From Class_totals) Select * from_totals 123456789 с Quiz_totals As (……), as (… … … …… … …… ), All_totals as (select * из Quiz_totals Union All Select * From Taperout_totals Union все выберите * из class_totals) выберите * from all_totals

Если вам нужно изменить запросы для любого типа деятельности, ясно, что логика содержится в соответствующем CTE. Это гораздо проще, чем охотиться через массу вложенных подборов.

Использование CTE для разбивания логики на меньшие проблемы делает процесс более управляемым. Тем не менее, каждый CTE все еще может ссылаться на многие таблицы. Всякий раз, когда вы работаете со многими таблицами, есть важный вопрос: какие столбцы принадлежат к какой таблице?

Учитывайте это, префикс каждые столбцы с псевдонимом его таблицы.

Используйте хорошие псевдонимы стола

Без псевдонимов таблиц, знание откуда из каждого столбца сложно. Это делает запросы труднее понять и изменить.

Тем не менее, нельзя иметь большую проблему: они могут привести к ошибкам.

Наиболее распространенная проблема — когда две таблицы имеют столбцы с одинаковым именем. Если вы используете нелистное имя, база данных не может определить, из какой оно таблицы, и оператор потерпит неудачу. Что еще хуже, так это то, что эта проблема может повлиять на существующий SQL, если вы добавите столбец, который вызывает столкновение с именем.

Квалификационные столбцы с их таблицей избегают этих проблем. Однобуквенные псевдонимы, взятые с начала имени таблицы, привлекательны, но могут быстро привести к проблемам. Например, скажем, вы пишете запрос, который обращается к таблицам как клиентов, так и контрактов. Если вы даете один псевдоним «C», как вы узнаете, к чему он относится, не прокручивая заявление?

Лучшим подходом является использование четыреххамерных псевдонимов, взятых с начала названия таблицы:

  • Для таблицы с одним словом, псевдоним-его первые четыре символа.
  • Столы с двумя словами принимают первые две буквы каждого слова.
  • В таблицах с тремя словами используются первые две буквы первого слова и первую букву последних двух слов.
  • Таблицы с четырьмя словами используют первый символ каждого слова.

Например,

  • Клиенты => CUST
  • order_items => orit
  • Shipment_list_batches => SHLB

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

Например, вам может потребоваться присоединиться к клиентам к их адресам доставки и платежей, оба хранятся в таблице адресов. Добавление Deli или Paym в зависимости от необходимости дает понять, какую роль играет таблица адресов:

from customers cust join addresses deli_addr on cust.delivery_address_id = deli_addr.address_id join addresses paym_addr on cust.payment_address_id = paym_addr.address_id 12345 from customers custjoin addresses deli_addr on cust.delivery_address_id = deli_addr.address_idjoin addresses paym_addron cust.payment_address_id = paym_addr.address_id

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

Используйте последовательный стиль

Лучший способ отформатировать ваш SQL — источник многих дебатов. У всех нас есть свои предпочтения в том, где и как отступать положения. Независимо от того, должны ли ключевые слова быть в прописных или строчных-это длительная битва.

В конечном счете, большинство из этих вариантов сводятся к личным предпочтениям. Итак, самый важный совет — это:

Выберите стиль форматирования и придерживайтесь его.

Однако вам нравится форматировать свой SQL, мы все можем согласиться с тем, что смешивание и сопоставление стилей в таком заявлении, как это, резкое и трудно читать:

Выберите некоторые_коломны из a_table, присоединяйтесь к другому_Table на… 1234 Выберите некоторые_Коломны из a_table, присоединяйтесь к другому_Table на…

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

Время от времени автоформатирование может изо всех сил пытаться определить, где разместить разрывы линий в сложных SQL, используя нишевые функции. Это может привести к объединению выражений в длинные линии, которые прокручивают сразу с края экрана.

Если вы столкнетесь с этой проблемой, уловка, чтобы преодолеть ее, состоит в том, чтобы разместить пустой комментарий, в котором вы хотите разрываться. Форматер должен уважать их, гарантируя разрыв линии именно там, где вы этого хотите.

Например:

Выберите Case -когда Formatted_lines_are_too_long -затем «Используйте комментарии, чтобы разбить их» -123 SELECT CASE -когда FORMATTED_LINES_ARE_TOO_LONG -затем «Используйте комментарии, чтобы разбить их» —

Использование стандартного форматера — один из многих способов, которым ваш редактор может помочь вам быстрее писать SQL, поэтому стоит потратить время на изучение функций производительности вашего редактора.

Познакомьтесь с вашим редактором

Вы, вероятно, включили автозаполнение для таблиц и имен столбцов, чтобы помочь вам написать SQL. Но это только один из способов помочь вам помочь вам быть более продуктивными.

Например, расширение разработчика Oracle SQL для VS -кода имеет несколько драгоценных камней, которые помогут вам.

Вы можете перетащить таблицы или столбцы из браузера схемы в редактор. Затем он спрашивает, использовать ли их в операторе Select, вставьте, обновляйте или удаляйте:

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

Вы также можете настроить фрагменты кода в коде VS, которые расширяют короткие последовательности в большие кодовые блоки. Вот несколько, на которые я полагаюсь, чтобы ускорить процесс написания SQL:

  • ssf => select * из
  • ii => вставить в значения $ 1 (2 доллара сша)
  • CRT => Создать таблицу $ 1 (C1 Int);
  • DRT => Drop Table $ 1 Каскадные ограничения чистки;

Потратить время на изучение сочетания клавиш в вашем редакторе для повседневных задач также может получить хорошие награды.

Заключение

Деловые требования могут быть сложными. Перевод их на SQL может быть сложным и может привести к огромным чудовищам, если вы небрежны.

Забота о структуре SQL с использованием CTE и хороших псевдонимов таблиц может ускорить процессы написания и обслуживания SQL. Использование автоформирования и других инструментов в вашем редакторе может еще больше оптимизировать задачи и повысить вашу производительность.

Однако, как мы видели в первой части этой серии, наиболее значительные успехи достигаются благодаря созданию модели солидных данных. Выбор хороших имен, нормализация ваших таблиц и создание ограничений делает понимание вашей схемы простым и пишет SQL.

Oracle предлагает широкий спектр технологий для строительства, тестирования и обслуживания приложений в облаке и в вашем центре обработки данных. Найдите бесплатные инструменты и учебные ресурсы на Developer.oracle.com Узнайте больше последних из Oracle Trending Stories YouTube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Крис является защитником разработчика базы данных Oracle, где его задача — помочь вам извлечь из нее максимальную пользу и повеселиться с SQL. Вы можете найти его в Twitter, @chrisrsaxon, и в его блоге все вещи SQL. Подробнее от Криса Саксона

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *