IT-оборудование
С пробегом и новое
Доставка по всей России
Время работы:
с 9:00 до 18:00
по Мск
0
0 Р
Акции

Как оптимизировать производительность выражений SELECT в SQL

Как оптимизировать производительность выражений SELECT в SQL

Производительность базы данных SQL возможно улучшить. Один из способов оптимизации - проработка в обращении с ней выражений SEL ECT.

Итак, что от нас потребуется?


Проверка индексов

Проверьте операторы JOIN и WHERE: для всех полей, в которых они используются, должны быть индексы.


Ограничение рабочего набора данных

Оцените таблицы, использующиеся вместе с SEL ECT. Можно ли применить к ним фильтры? Часто бывает так, что запросы исполняются молниеносно тогда, когда в БД лишь несколько тысяч строк в таблице. Но все течет, все меняется! Приложение растет, заспросы выполняются все медленнее. Из-за размазанности этого процесса во времени, неясно, когда время все-таки оптимизировать запросы пришло.

Но это достаточно просто: нужно всего лишь ввести в запрос ограничение на данные сегодняшнего месяца. В случае, если вы используете в запросе вложенный SELECT, примените к внутренним выражениям фильтры.


Выбор необходимых полей

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

Если вы используете столбцовые базы данных, то имейте ввиду, что чтобы снизить нагрузку на ввод-вывод, надо будет запрашивать меньше столбцов.


Удаление лишних таблиц

То же самое, что и в случае с дополнительными полями - чем их меньше, тем лучше. Очень часто в запросе есть таблицы, которые вообще не влияют на получаемые данные, так что если нужно снизить нагрузку на базу данных - смело удаляем JOIN к лишним таблицам!


Удаление OUTER JOIN

Тут все будет зависеть от того, все ли вы можете удалять в таблицах. Самое простое решение - удалить OUTER JOIN посредством замещения в обеих таблицах.

Например, если у вас есть 2 таблицы, использующих OUTER JOIN, то вам нужно будет вставить дополнительные строки в таблицах с клиентами, заменяя все показатели NULL на "заменитель".

Это не только снимает необходимость в операторе, но стандартизирует таблицы и упрощает работу разработчиков.


Удаление вычисляемых полей из WHERE и JOIN

Опять же, в зависимости от того, насколько вы можете вносить изменения в схемы данных, это может быть легко или просто. Но провернуть эту операцию можно уже в случае, если есть возможность создания поля с вычисляемым значением, использующимся в JOIN.

Например, у нас есть выражение:

1. FR OM sales a

2. JOIN budjet b ON ((year(a.sale_date)) * 100) + month(a.sale_date)) = b.budget_year

Меняем его, добавляя столбец с годом и месяцем в таблицу продаж:

1. SELECT * FR OM PRODUCTSFROM sales a

2. JOIN budjet b ON a.sale_year_month = b.budget_year


 
Поделитесь статьей в соцсетях   
Получите сервер
на тест-драйв
Оцените сочетание производительности и цены серверов от ItTelo
Соберем любую конфигурацию под ваши задачи и отправим вам на тестирование без предоплаты
После заявки:
  • Консультация
  • Бесплатная доставка
  • Тест-драйв у вас
  • Оплата
  • Гарантия 12 месяцев
Хотите проконсультироваться? С радостью ответим на ваши вопросы 8 800 551 80 12 или info@ittelo.ru