Giải pháp: SHOW INDEX
Lệnh SHOW INDEX FROM table_name hiển thị thông tin chi tiết tất cả index của bảng.
Ví dụ minh họa
Tạo bảng và index
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(20),
LastName VARCHAR(20)
);
mysql> CREATE INDEX idx_id_firstname ON DemoTable(Id, FirstName);
Xem index
mysql> SHOW INDEX FROM DemoTable;
Kết quả
+--------------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | +--------------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | DemoTable | 0 | PRIMARY | 1 | Id | A | 0 | NULL | NULL | | BTREE | | | YES | | DemoTable | 1 | idx_id_firstname | 1 | Id | A | 0 | NULL | NULL | | BTREE | | | YES | | DemoTable | 1 | idx_id_firstname | 2 | FirstName | A | 0 | NULL | NULL | YES | BTREE | | | YES | +--------------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
Giải thích các cột
| Cột | Ý nghĩa |
|---|---|
Table | Tên bảng |
Non_unique | 0 = Unique (PRIMARY/UNIQUE), 1 = Non-unique |
Key_name | Tên index (PRIMARY cho PK) |
Seq_in_index | Thứ tự cột trong index (1, 2, 3...) |
Column_name | Tên cột |
Collation | A (Ascending), D (Descending), NULL (không sắp xếp) |
Cardinality | Số giá trị duy nhất ước lượng (để optimizer quyết định) |
Sub_part | Prefix length (NULL = toàn bộ cột) |
Packed | Cách nén key (NULL = không) |
Null | YES nếu cột cho phép NULL |
Index_type | BTREE, HASH, FULLTEXT, SPATIAL |
Comment | Ghi chú |
Index_comment | Comment khi tạo index |
Visible | YES/NO (MySQL 8.0+ invisible index) |
Cách khác: INFORMATION_SCHEMA
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'your_db' AND TABLE_NAME = 'DemoTable';
Các lệnh SHOW liên quan
SHOW INDEX FROM DemoTable; SHOW INDEX FROM DemoTable FROM your_db; SHOW KEYS FROM DemoTable; -- Alias
Phân tích Cardinality
- Cardinality thấp (ví dụ: gender M/F) → Index kém hiệu quả
- Cardinality cao (gần số dòng) → Index tốt
- Cập nhật:
ANALYZE TABLE DemoTable