Некоторые запросы потребляют больше ресурсов, чем другие. Например, запросы, которые возвращают большие наборы результатов и те, которые содержат предложения WHERE, которые не являются уникальными, всегда потребляют много ресурсов. Никакой уровень интеллекта в базах данных sql не помогает оптимизировать запросы, и при этом они не могут исключить стоимость ресурсов из этих конструкций по сравнению с менее сложным запросом.
Мы можем получить одинаковые результаты, написав разные SQL-запросы. Но использование лучшего запроса важно при рассмотрении производительности. Настройка SQL - это процесс, гарантирующий, что операторы SQL, сгенерированные приложением, будут выполнены в кратчайшие сроки. Эти запросы SQL могут быть оптимизированы для повышения производительности.
Методы оптимизации или настройка SQL
Далее мы увидим некоторые методы оптимизации
СЛУЧАЙ 1: SQL-запрос становится быстрее, если вы используете имена полей, а не * как запрос всех полей в таблице
ВЫБРАТЬ * ОТ клиентов
Так лучше написать запрос
ВЫБЕРИТЕ идентификатор, имя, адрес ОТ клиентов
СЛУЧАЙ 2: Предложение HAVING используется для фильтрации строк после того, как все строки выбраны.
ВЫБЕРИТЕ предмет, посчитайте (студенты) номер студента ОТ ВТОРОГО предмета ГДЕ предмет = 'Химия' И предмет = 'История' Предмет GROUP BY;
Так лучше написать запрос
SELECTmateria, count (студентов) student_number ОТ зарегистрированного GROUP BY предмет ОБЛАДАЕТ предмет = 'Химия' И предмет = 'История'
СЛУЧАЙ 3: Иногда в основном запросе может быть несколько подзапросов. Давайте посмотрим в следующем примере, как минимизировать блок подзапроса в вашем запросе.
Мы консультируем старейшего и самого высокооплачиваемого сотрудника.
ВЫБЕРИТЕ имя ОТ сотрудников, ГДЕ зарплата = (ВЫБЕРИТЕ МАКС (зарплата) ОТ сотрудников) И ВОЗРАСТ = (ВЫБЕРИТЕ МАКС (возраст) ОТ сотрудников) И пункт = 'Электроника';
Более оптимальным будет написать способ запроса на подписку
ВЫБЕРИТЕ имя ОТ сотрудников ГДЕ (зарплата, возраст) = (ВЫБЕРИТЕ МАКС (зарплата), МАКС (возраст) ОТ сотрудников) И пункт = 'Электроника';
СЛУЧАЙ 4: Правильное использование в запросе операторов EXISTS, IN и табличных объединений важно, поскольку они являются транзакциями, которые замедляют доступ к данным.
Как правило, самая низкая производительность в запросе Canda.
IN эффективен, когда большинство критериев фильтра находятся в подзапросе.
Exist эффективен, когда большинство критериев фильтра находятся в основном запросе.
Давайте посмотрим несколько примеров
Выберите * из продукта p, где product_id IN (выберите product_id из заказов)
Лучше написать это следующим образом
Выберите * из продукта, где EXISTS (выберите * из заказов, где orders.product_id = product.product_id)
Используйте существует вместо DISTINCT
Пример увидеть, какие категории имеют книги в наличии
ВЫБЕРИТЕ DISTINCT Categories.id, category.categories ОТ категорий, книги, ГДЕ Categories.id = books.idcategory;
Оптимально написать запрос следующим образом
ВЫБЕРИТЕ DISTINCT Categories.id, category.categories ОТ категорий, ГДЕ ЕСТЬ (ВЫБЕРИТЕ 'X' ИЗ книг, ГДЕ books.idcategory = Categories.id);
Это несколько советов, которые позволят вам сэкономить ресурсы при выполнении SQL-запросов и, таким образом, иметь приложение с более быстрыми ответами.
- 0
СТАТЬИ