Top.Mail.Ru
КОНФИГУРАТОР Серверы
Сетевое оборудование
СХД
IP-телефоны IP-камеры Источники бесперебойного питания (ИБП) Комплектующие Готовые решения -40 % Серверы под задачу
О компании Купить в лизинг Блог Отзывы Доставка Гарантия Контакты Работа у нас Реквизиты Спецпредложения Игровые ПК на ISKRAPC Заявка в тех поддержку
Эксперты в подборе IT-оборудования

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

9 декабря 2024
Как оптимизировать производительность выражений 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

ПОДПИСКА

НА РАССЫЛКУ
ПОЛЕЗНЫЕ СТАТЬИ, АКЦИИ
И ЗАКРЫТЫЕ РАСПРОДАЖИ
Котик подписка
Вам также может быть интересно

Товар добавлен в список сравнения
Перейти в сравнение
Продолжить просмотр
Заявка в тех поддержку
Заказать консультацию
IT-архитектор подберет сервер под вашу задачу
Заказать сервер
Мы свяжемся с вами в течение 15 мин
Зарегистрироваться в бонусной программе
Заявка на лизинг