Оптимизация sql баз - советы по улучшению быстродействия SQL Server баз данных

Введение

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

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

Банально, но обычно самый простой способ ускорить запрос SQL и провести оптимизацию SQL баз - просто создать подходящий индекс.

Очень аккуратно обращайтесь к очень большим таблицам

Один неосторожный вызов большой таблицы - и запрос подвисает на минуту. 

Если обращаесь к большим таблицам, то необходимо задействовать все практики по написанию оптимизированного SQL кода. 

Извлечение из малых таблиц довольно сложно сделать проблемным. 

Если где-то необходимо задействовать большую таблицу - все внимание туда.

Про оптимизацию SELECT запросов

Кешируйте какие-то сложно вычисляемые данные 

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

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

Выносите большие поля в отдельные таблицы

Есть таблица статей. Тело статьи можно вынести в отдельную таблицу. В этом случае работа с табицей Статьи будет работать быстрее. 

Правило конечно не панацея, но для очень больших таблиц можно рассмотреть отдельное хранение большого поля в выделенной таблице (или даже базе данных). 

Выносить логовые данные в отдельные базы данных

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

Использование внешних ключей, справочников, нормализация данных

Чем лучше сделана структура данных, тем лучше будут работать запрос выборки по ней. Если у вас множество ненормализованных данных (например категория товара идет как некий код или прямо строковое поле Категория X), то запросы будут работать неоптимально. 

Уменьшайте объем ообрабатываемых данных

При работе с выборками необходимо как можно раньше и эффективные отсечь все ненужные данные. 

Чем меньше данных в текущей обработке, тем быстрее это будет работать. 

Процедуры обновления/удаления работают в целом медленнее выборки

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

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

Избегайте неявных приведений типов

Лучше в явном виде приводите сразу типы к требуемым. Старайтесь всегда сравнивать значения одного типа, а не разных. 

Интересный пример - сравнение дат. Сравнить datetime с date и date с date - большая разница в производительности на больших данных.

Смотрите по плану запроса - не было ли каких-то неявных приведений типов, тормозящих выполнение запроса.

P.S. Если вам надо найти медленно работающие запросы, то изучите эту статью.

Насколько полезной была статья?

Что еще посмотреть по SQL Server

Разработчик SQL, нужны клиенты и заказы?

Прямые заказы от клиентов. Нужно знать только SQL и HTML
Работа на MS SQL Server

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Планируете делать веб-проект?
Сайт использует Cookie. Правила конфиденциальности OK