Оператор 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 в MySQL, упомянутых ниже.
Вы должны создать одну или несколько таблиц с данными в базе данных 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 в запросе SELECT.
Здесь показан способ использования ключевого слова 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» и т. д.
Здесь показан способ использования ключевого слова 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;
В этом примере показан способ использования оператора EXPLAIN для запроса SELECT с функцией count(). Здесь запрос SELECT будет подсчитывать количество записей, содержащих кредитное значение меньше 2.
explain select count(*) from courses where credit < 2
В этом примере показан способ использования инструкции EXPLAIN ANALYZE для запроса SELECT с функцией count(), которая использовалась в предыдущем примере.
explain analyze select count(*) from courses where credit < 2;
В выходных данных отображается подробная информация о выполнении запроса, такая как стоимость, фактическое время, циклы и т. д.
В этой статье показано различное использование операторов EXPLAIN и EXPLAIN ANALYZE в MySQL для простого запроса SELECT и запроса SELECT с предложением WHERE, чтобы узнать цель использования этих операторов.