1?、EXPLAIN 的語法
MySQL 中的 EXPLAIN 命令是用于分析 SQL 查詢執行計劃的關鍵工具,它能幫助開發者理解查詢的執行方式并找出性能瓶頸??。
語法格式:
EXPLAIN <sql語句>
【示例】查詢學生表關聯班級表的執行計劃。
(1)創建班級信息表和學生信息表,并創建索引和添加數據
-- 創建數據庫
CREATE DATABASE IF NOT EXISTS db_school;-- 使用數據庫
USE db_school;-- 創建數據表:tbl_class(班級信息表)
DROP TABLE IF EXISTS tbl_class;
CREATE TABLE IF NOT EXISTS tbl_class
(class_id BIGINT(20) AUTO_INCREMENT PRIMARY KEY COMMENT '班級ID',class_name VARCHAR(50) NOT NULL COMMENT '班級姓名'
) COMMENT = '班級信息表';-- 創建數據表:tbl_student(學生信息表)
DROP TABLE IF EXISTS tbl_student;
CREATE TABLE IF NOT EXISTS tbl_student
(student_id BIGINT(20) AUTO_INCREMENT PRIMARY KEY COMMENT '學生ID',student_name VARCHAR(50) NOT NULL COMMENT '學生姓名',class_id BIGINT(20) NOT NULL COMMENT '班級ID'
) COMMENT = '學生信息表';
SELECT * FROM tbl_student;-- 創建索引(普通索引)
CREATE INDEX idx_class_id ON tbl_student(class_id);-- 創建數據:tbl_class(班級信息表)
TRUNCATE TABLE tbl_class;
INSERT INTO tbl_class(class_name) VALUES('高一(1)班');
INSERT INTO tbl_class(class_name) VALUES('高二(2)班');
SELECT * FROM tbl_class;-- 創建數據:tbl_student(學生信息表)
TRUNCATE TABLE tbl_student;
INSERT INTO tbl_student(student_name,class_id) VALUES('張三', 1);
INSERT INTO tbl_student(student_name,class_id) VALUES('李四', 1);
INSERT INTO tbl_student(student_name,class_id) VALUES('王五', 1);
INSERT INTO tbl_student(student_name,class_id) VALUES('孫六', 2);
INSERT INTO tbl_student(student_name,class_id) VALUES('趙七', 2);
SELECT * FROM tbl_student;
(2)使用 EXPLAIN 命令,查看執行計劃
-- 使用 EXPLAIN 命令,查看執行計劃
EXPLAIN
SELECT * FROM tbl_student
LEFT JOIN tbl_class ON tbl_student.class_id