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

Xem index đã tạo trong MySQL?

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
TableTên bảng
Non_unique0 = Unique (PRIMARY/UNIQUE), 1 = Non-unique
Key_nameTên index (PRIMARY cho PK)
Seq_in_indexThứ tự cột trong index (1, 2, 3...)
Column_nameTên cột
CollationA (Ascending), D (Descending), NULL (không sắp xếp)
CardinalitySố giá trị duy nhất ước lượng (để optimizer quyết định)
Sub_partPrefix length (NULL = toàn bộ cột)
PackedCách nén key (NULL = không)
NullYES nếu cột cho phép NULL
Index_typeBTREE, HASH, FULLTEXT, SPATIAL
CommentGhi chú
Index_commentComment khi tạo index
VisibleYES/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