Оптимізація запитів

Для будь-якої виробничої бази даних продуктивність SQL-запитів рано чи пізно стає проблемою. Довготривалі запити не тільки споживають системні ресурси, що призвели до повної роботи серверів та додатків, але й можуть призвести до блокування таблиці та пошкодження даних. Отже, оптимізація запитів стає залишається завданням.

Для початку ми пропонуємо деякі керівні принципи оптимізації запитів:

1.Зрозуміти, як база даних виконує ваш запит

Сьогодні всі бази даних мають власний оптимізатор запитів, який пропонує користувачам спосіб зрозуміти, як виконується запит. Наприклад, який індекс з якої таблиці використовується для виконання запиту? Першим кроком до оптимізації запитів є розуміння того, що робить база даних. Різні бази даних мають різні команди для цього. Наприклад, в MySQL можна використовувати ключове слово “EXPLAIN [SQL Query]”, щоб побачити план запиту. В Oracle для перегляду плану запиту можна використати “EXPLAIN PLAN FOR [SQL Query]”.

2.Отримуйте якомога менше даних

Чим більше даних повертається в результаті запиту, тим більше ресурсів потрібно для розширення бази даних, щоб обробити і зберегти ці дані. Тому, наприклад, якщо вам потрібно отримати лише один стовпець з таблиці, не використовуйте ‘SELECT *’.

3.Зберігайте проміжні результати

Іноді логіка запиту може бути досить складною. Часто можна досягти бажаного результату за допомогою підзапитів, вбудованих представлень та операторів типу UNION. У таких випадках проміжні результати не зберігаються в базі даних, а відразу використовуються в запиті. Це може призвести до проблем з продуктивністю, особливо коли проміжні результати мають велику кількість рядків.

Спосіб підвищити продуктивність запиту в таких випадках – зберігати проміжні результати в тимчасовій таблиці, а початковий SQL-запит розбити на кілька SQL-запитів. У багатьох випадках ви навіть можете створити індекс на тимчасовій таблиці, щоб ще більше прискорити виконання запиту. Звичайно, це додає трохи складності в управлінні запитами (наприклад, необхідність керувати тимчасовими таблицями), але прискорення продуктивності запитів часто варте того, щоб потурбуватися про це.

Нижче наведено кілька конкретних стратегій оптимізації запитів.

  • Використання індексу
    Використання індексу – це перша стратегія, яку слід використовувати для прискорення запиту. Насправді, ця стратегія настільки важлива, що оптимізація індексу також обговорюється.
  • Агрегована таблиця
    Попереднє заповнення таблиць вищих рівнів, щоб менше даних потрібно було аналізувати.
  • Вертикальне розділення
    Розбиття таблиці на стовпці. Ця стратегія зменшує обсяг даних, які потрібно обробити SQL-запиту.
  • Горизонтальне розділення
    Розбиття таблиці на частини за значенням даних, найчастіше за часом. Ця стратегія зменшує обсяг даних, які потрібно обробити SQL-запиту.
  • Денормалізація
    Процес денормалізації об’єднує кілька таблиць в одну. Це прискорює виконання запитів, оскільки потрібно менше з’єднань таблиць.
  • Налаштування сервера
    Кожен сервер має свої параметри, і часто налаштування параметрів сервера таким чином, щоб він міг повною мірою використовувати апаратні ресурси, може значно прискорити виконання запитів.

ОРИГІНАЛ СТАТТІ:Query Optimization

🚀Долучайтесь до нашої спільноти Telegram:

🚀Долучайтесь до нашої спільноти FaceBook:

Posted in DBTagged

Leave a Reply

Your email address will not be published. Required fields are marked *