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

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

20 апреля 2019
Содержание:

    Производительность базы данных 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

     
    Поделитесь статьей в соцсетях   
     
    Вам также может быть интересно

    Товар добавлен в список сравнения
    Перейти в сравнение
    Продолжить просмотр
    Подбираете сервер для 1С?
    Подпишитесь на специальную серию писем про выбор и настройку сервера под 1С
    Подписаться
    Боитесь неправильно выбрать сервер?
    Оставьте свой email, и мы пришлем чек-лист с 5 самыми распространенными ошибками
    Получить чек-лист
    Нажимая кнопку "Получить чек-лист", вы даёте согласие на обработку персональных данных
    Заказать консультацию
    IT-архитектор подберет сервер под вашу задачу
    Заказать сервер
    Мы свяжемся с вами в течение 15 мин
    Заявка на лизинг