Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tạo index đa cột (composite index) 3 cột trong MySQL

Index đa cột (composite index / multi-column index) trong MySQL được tạo bằng từ khóa KEY hoặc INDEX theo sau là danh sách cột trong ngoặc đơn. Thứ tự cột trong index rất quan trọng cho hiệu năng truy vấn.

Ví dụ minh họa

Tạo bảng với index 3 cột (StudentId, StudentMarks, StudentAge):

mysql> CREATE TABLE DemoTable1437 (
    StudentId INT,
    StudentName VARCHAR(20),
    StudentMarks INT,
    StudentAge INT,
    KEY (StudentId, StudentMarks, StudentAge)
);

Kiểm tra cấu trúc (cột Key = MUL nghĩa là có index):

mysql> DESC DemoTable1437;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| StudentId    | int(11)     | YES  | MUL | NULL    |       |
| StudentName  | varchar(20) | YES  |     | NULL    |       |
| StudentMarks | int(11)     | YES  |     | NULL    |       |
| StudentAge   | int(11)     | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+

Chèn dữ liệu:

mysql> INSERT INTO DemoTable1437 VALUES (101, 'Chris', 78, 21);
mysql> INSERT INTO DemoTable1437 VALUES (102, 'David', 89, 22);

Quy tắc sử dụng Composite Index (Leftmost Prefix Rule)

Index (A, B, C) có thể dùng cho các truy vấn:

WHERE / ORDER BYDùng index?Lý do
A✅ CóPrefix đầu tiên
A, B✅ CóPrefix 2 cột đầu
A, B, C✅ CóToàn bộ index
B hoặc B, C❌ KhôngThiếu cột đầu A
A, C⚠️ Một phầnChỉ dùng cột A, bỏ qua B

Cú pháp tạo index khác

EXPLAIN SELECT * FROM DemoTable1437 WHERE StudentId = 101 AND StudentMarks > 80;

Cột key trong kết quả EXPLAIN sẽ hiển thị tên index được sử dụng.