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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ищем партнеров-разработчиков на T-SQL

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

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

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