Оптимизация sql баз - советы по улучшению быстродействия SQL Server баз данных
Введение
В статье разберем некоторые советы по улучшению базы данных SQL Server в плане оптимизации быстродействия.
Используйте индексы
Банально, но обычно самый простой способ ускорить запрос SQL и провести оптимизацию SQL баз - просто создать подходящий индекс.
Очень аккуратно обращайтесь к очень большим таблицам
Один неосторожный вызов большой таблицы - и запрос подвисает на минуту.
Если обращаесь к большим таблицам, то необходимо задействовать все практики по написанию оптимизированного SQL кода.
Извлечение из малых таблиц довольно сложно сделать проблемным.
Если где-то необходимо задействовать большую таблицу - все внимание туда.
Про оптимизацию SELECT запросов
Кешируйте какие-то сложно вычисляемые данные
Можно создавать столбцы для хранения некого агрегированного значенния (например, рейтинг пользователя).
Плохая идея - сортировать по вычисляему полю или подзапросу. Лучше поле сделать статичным и обновлять его раз в сутки к примеру. Сортировка по такому полю будет быстро работать.
Выносите большие поля в отдельные таблицы
Есть таблица статей. Тело статьи можно вынести в отдельную таблицу. В этом случае работа с табицей Статьи будет работать быстрее.
Правило конечно не панацея, но для очень больших таблиц можно рассмотреть отдельное хранение большого поля в выделенной таблице (или даже базе данных).
Выносить логовые данные в отдельные базы данных
В этом случае основная база будет меньше, быстрее делаться бекап базы, а также меньше шансов встретить какие-то ограничения на размер базы данных.
Использование внешних ключей, справочников, нормализация данных
Чем лучше сделана структура данных, тем лучше будут работать запрос выборки по ней. Если у вас множество ненормализованных данных (например категория товара идет как некий код или прямо строковое поле Категория X), то запросы будут работать неоптимально.
Уменьшайте объем ообрабатываемых данных
При работе с выборками необходимо как можно раньше и эффективные отсечь все ненужные данные.
Чем меньше данных в текущей обработке, тем быстрее это будет работать.
Процедуры обновления/удаления работают в целом медленнее выборки
Некоторые разработчики извлекают кучу данных в временную таблицу ,а потом из нее удаляют даныне или обновляют их.
Не нужно так делать. Необходимо сразу оптимальным образом за один SELECT извлечь все необходимые данные в нужном формате и затем за один insert вставить во временную таблицу только те данные, которые нужны для дальнейшей обработки.
Избегайте неявных приведений типов
Лучше в явном виде приводите сразу типы к требуемым. Старайтесь всегда сравнивать значения одного типа, а не разных.
Интересный пример - сравнение дат. Сравнить datetime с date и date с date - большая разница в производительности на больших данных.
Смотрите по плану запроса - не было ли каких-то неявных приведений типов, тормозящих выполнение запроса.
P.S. Если вам надо найти медленно работающие запросы, то изучите эту статью.
Что еще посмотреть по SQL Server
Разработчик SQL, нужны клиенты и заказы?
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта