Как я могу научиться оптимизировать SQL-запросы
Я знаю, как писать запросы SQL
и получать полученные результаты. Но иногда мои запросы медленны, и я не совсем понимаю, почему.
Каковы хорошие ресурсы для обучения написанию эффективных запросов и оптимизации запросов, которые я уже написал?
Ответы
Ответ 1
Я бы сказал, что основные вещи:
- Понимать основанный на наборах характер SQL, читая книги с нейтральной платформой, такие как Celko; это поможет вам избежать ошибок новичка, например, использовать курсоры (или другие итеративные подходы), где они не нужны.
- Изучите основы нормализации и когда денормализовать; эффективные запросы начинаются с хорошо организованных данных.
- Понять, где индексы могут быть полезны, и где они не могут; например, понять, как мощность ваших данных влияет на эффективность индекса, какие запросы SARGable и когда использовать индексы с несколькими столбцами.
- Узнайте, как использовать платформу EXPLAIN PLAN или ее эквивалентную для вашей платформы; наблюдая, как компилируется ваш запрос, и ресурсы, которые он потребляет, вы лучше поймете узкие места.
- Изучите специфичные для платформы методы, такие как индексированные/материализованные представления, полнотекстовое индексирование и методы подкачки и обработки иерархических данных.
Ответ 2
Прошло некоторое время с тех пор, как мне пришлось его использовать, но я нашел SQL Tuning, чтобы быть весьма полезным на работе, которую я имел несколько лет назад.
Ответ 3
Отличная книга по теме: Внутри Microsoft SQL Server 2005: настройка и оптимизация запросов
Ответ 4
Для информации о MySQL, глава 7 справочного руководства посвящена оптимизации. В § 7.3, в частности, рассматриваются оптимизация операторов MySQL. Вики PostgreSQL аналогично документирует оптимизацию специально для этой СУБД. Microsoft " Как оптимизировать SQL-запросы" вышел на пенсию; Я не уверен, есть ли более свежий документ. У Oracle есть пара документов на оптимизация запросов для различных версий.
Ответ 5
использовать индексы, где таблицы могут использовать их, а также запускать советник настройки базы данных по запросу, если у вас есть SQL Server.