Подтвердить что ты не робот

Как я могу научиться оптимизировать SQL-запросы

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

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

4b9b3361

Ответ 1

Я бы сказал, что основные вещи:

  • Понимать основанный на наборах характер SQL, читая книги с нейтральной платформой, такие как Celko; это поможет вам избежать ошибок новичка, например, использовать курсоры (или другие итеративные подходы), где они не нужны.
  • Изучите основы нормализации и когда денормализовать; эффективные запросы начинаются с хорошо организованных данных.
  • Понять, где индексы могут быть полезны, и где они не могут; например, понять, как мощность ваших данных влияет на эффективность индекса, какие запросы SARGable и когда использовать индексы с несколькими столбцами.
  • Узнайте, как использовать платформу EXPLAIN PLAN или ее эквивалентную для вашей платформы; наблюдая, как компилируется ваш запрос, и ресурсы, которые он потребляет, вы лучше поймете узкие места.
  • Изучите специфичные для платформы методы, такие как индексированные/материализованные представления, полнотекстовое индексирование и методы подкачки и обработки иерархических данных.

Ответ 2

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

Ответ 4

Для информации о MySQL, глава 7 справочного руководства посвящена оптимизации. В § 7.3, в частности, рассматриваются оптимизация операторов MySQL. Вики PostgreSQL аналогично документирует оптимизацию специально для этой СУБД. Microsoft " Как оптимизировать SQL-запросы" вышел на пенсию; Я не уверен, есть ли более свежий документ. У Oracle есть пара документов на оптимизация запросов для различных версий.

Ответ 5

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