ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Оператор EXPLAIN в MySQL

Настройка производительности SQL - Советы по оптимизации запросов MySQL

Оператор EXPLAIN является ценным оператором MySQL для получения информации о выполнении операторов запроса. Структуру запросов MySQL можно четко понять и правильно оптимизировать с помощью оператора EXPLAIN. Когда это ключевое слово EXPLAIN используется с любым запросом, информация о каждом выполнении, такая как порядок таблицы, информация о соединении таблицы и т. д., будет предоставляться в одной или нескольких строках после обработки оператора запроса. Его можно использовать с запросами SELECT, INSERT, UPDATE, DELETE и REPLACE для версии MySQL 8+. Дополнительные сведения о выполнении запроса можно получить с помощью оператора EXPLAIN ANALYZE. Использование операторов EXPLAIN и EXPLAIN ANALYZE в запросах MySQL показано в этой статье на различных примерах.

 

Синтаксис:

Оператор EXPLAIN применяется к любому запросу MySQL. Синтаксис оператора EXPLAIN приведен ниже.

EXPLAIN (Query statement)

Ограничения оператора EXPLAIN:

Существуют некоторые ограничения на использование операторов EXPLAIN в MySQL, упомянутых ниже.

  1. Его нельзя применить к какой-либо хранимой процедуре.
  2. Он не предоставляет никакой информации об оптимизации запросов.
  3. Он не предоставляет никакой информации о выводе сохраненных функций и триггеров.
  4. Статистическая информация, предоставляемая оператором EXPLAIN, может быть неподходящей.

 

Предпосылки:

Вы должны создать одну или несколько таблиц с данными в базе данных MySQL, чтобы проверить способ использования операторов EXPLAIN и EXPLAIN ANALYZE в MySQL. Откройте терминал и подключитесь к серверу MySQL, выполнив следующую команду.

$ sudo mysql -u root

 

Выполните следующую команду, чтобы создать базу данных с именем test_db.

CREATE DATABASE test_db;

 

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

USE test_db;

 

Выполните следующий запрос, чтобы создать таблицу с именем учителей с четырьмя полями.

CREATE TABLE teachers(

id INT NOT NULL PRIMARY KEY,

name VARCHAR(30) NOT NULL,

dept_name VARCHAR(15),

designation VARCHAR(30));

 

Выполните следующий запрос INSERT, чтобы вставить три значения в таблицу учителей.

INSERT INTO `teachers` (`id`, `name`, `dept_name`, `designation`) VALUES ('7854', 'Andrey Ex', 'CSE', 'programmer'), 
('9045', 'Anna Pupkina', 'English', 'programmer'), ('2356', 'Maxs Terminator', 'BBA', 'programmer');

 

Выполните следующий запрос, чтобы создать таблицу с именем «courses» с четырьмя полями, содержащими внешний ключ, который создаст отношение «один ко многим» между таблицей учителей и таблицей курсов.

CREATE TABLE courses(

id VARCHAR(10) NOT NULL PRIMARY KEY,

name VARCHAR(30) NOT NULL,

credit FLOAT(3,2),

teacher_id int,

CONSTRAINT fk_teacher FOREIGN KEY (teacher_Id)

REFERENCES teachers(id)

ON DELETE CASCADE ON UPDATE CASCADE );

 

Выполните следующий запрос INSERT, чтобы вставить четыре записи в таблицу курсов.

INSERT INTO `courses` (`id`, `name`, `credit`, `teacher_id`) VALUES

('CSE-303', 'Artificial Intelligence', '3.0', '7854'),

('BBA-101', 'Marketing', '2.0', '2356'),

('ENG-201', 'Literature', '3.0', '9045'),

('CSE-404', 'Multimedia', '3.0', '7854');

Использование ключевых слов EXPLAIN и EXPLAIN ANALYZE:

В этой части статьи показано использование операторов EXPLAIN и EXPLAIN ANALYZE в запросе SELECT.

 

Пример 1: Использование оператора EXPLAIN для одной таблицы

Здесь показан способ использования ключевого слова EXPLAIN для запроса SELECT для чтения одной таблицы. Выполните следующий запрос SELECT, чтобы прочитать все записи таблицы учителей.

SELECT * FROM teachers;

 

Запустите следующий запрос SELECT с оператором EXPLAIN, чтобы проверить информацию о выполнении ранее выполненного запроса SELECT.

EXPLAIN SELECT * FROM teachers;

 

Выполните следующий запрос SELECT, чтобы прочитать записи таблицы курсов на основе условия предложения WHERE. Запрос напечатает записи из таблицы курсов, где значение поля кредита равно 3.0.

SELECT * FROM courses WHERE credit=3.0;

 

Теперь запустите следующий запрос SELECT с оператором EXPLAIN, чтобы проверить информацию о выполнении ранее выполненного запроса SELECT.

EXPLAIN SELECT * FROM courses WHERE credit=3.0;

 

В выходных данных отображаются сведения о выполнении запроса с предложением WHERE, например, значение поля rows равно 4 , значение дополнительного поля — «Using where» и т. д.

 

Пример 2: Использование EXPLAIN для нескольких таблиц

Здесь показан способ использования ключевого слова EXPLAIN для запроса SELECT чтения записей из двух связанных таблиц. Выполните следующий запрос SELECT, чтобы прочитать код курса, название курса и имя учителя из таблиц учителей и курсов.

SELECT courses.id as `Course Code,` courses.name as `Course Name,` teachers.name as `Course Teacher`

FROM teachers, courses

WHERE courses.teacher_id = teachers.id;

 

Следующий вывод появится после выполнения вышеуказанного запроса.

Теперь запустите следующий запрос SELECT с оператором EXPLAIN, чтобы проверить информацию о выполнении ранее выполненного запроса SELECT.

EXPLAIN SELECT courses.id as `Course Code,` courses.name as `Course Name,` teachers.name as `Course Teacher`

FROM teachers, courses

WHERE courses.teacher_id = teachers.id;

Пример 3: Использование EXPLAIN с функцией count()

В этом примере показан способ использования оператора EXPLAIN для запроса SELECT с функцией count(). Здесь запрос SELECT будет подсчитывать количество записей, содержащих кредитное значение меньше 2.

explain select count(*) from courses where credit < 2

 

Пример 4: Использование EXPLAIN ANALYZE с функцией count()

В этом примере показан способ использования инструкции EXPLAIN ANALYZE для запроса SELECT с функцией count(), которая использовалась в предыдущем примере.

explain analyze select count(*) from courses where credit < 2;

 

В выходных данных отображается подробная информация о выполнении запроса, такая как стоимость, фактическое время, циклы и т. д.

 

Вывод:

В этой статье показано различное использование операторов EXPLAIN и EXPLAIN ANALYZE в MySQL для простого запроса SELECT и запроса SELECT с предложением WHERE, чтобы узнать цель использования этих операторов.

Exit mobile version