Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีดู Index ที่สร้างไว้ในตาราง MySQL ด้วย SHOW INDEX

แสดงรายการดัชนี (Indexes) ของตารางด้วย SHOW INDEX

คำสั่ง SHOW INDEX FROM table_name (หรือ SHOW KEYS) แสดงข้อมูลดัชนีทั้งหมดของตาราง รวมถึง Primary Key, Unique, Index ทั่วไป, Fulltext, Spatial

ตัวอย่างสร้างตารางและสร้าง Index

CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(20),
    LastName VARCHAR(20)
);

CREATE INDEX idx_firstname ON DemoTable (Id, FirstName);

คำสั่งดู Index

SHOW INDEX FROM DemoTable;

ผลลัพธ์

+--------------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| 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_firstname| 1            | Id          | A         | 0           | NULL     | NULL   |      | BTREE      |         |               | YES     |
| DemoTable    | 1          | idx_firstname| 2            | FirstName   | A         | 0           | NULL     | NULL   | YES  | BTREE      |         |               | YES     |
+--------------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+

คอลัมน์สำคัญ:

คอลัมน์ความหมาย
Tableชื่อตาราง
Non_unique0 = Unique (Primary/Unique), 1 = Non-unique (Index ปกติ)
Key_nameชื่อดัชนี (PRIMARY สำหรับ Primary Key)
Seq_in_indexลำดับคอลัมน์ในดัชนี (1, 2, 3... สำหรับ Composite Index)
Column_nameชื่อคอลัมน์
CollationA = Ascending, NULL = ไม่จัดเรียง (Hash/Fulltext)
Cardinalityจำนวนค่าที่ไม่ซ้ำกันประมาณ (สำหรับ Optimizer)
Index_typeBTREE, HASH, FULLTEXT, SPATIAL
VisibleYES/NO (MySQL 8.0+ Invisible Indexes)

คำสั่งอื่นๆ ที่เกี่ยวข้อง:

  • SHOW CREATE TABLE DemoTable; ดูคำสั่งสร้างตารางรวม Index ทั้งหมด
  • EXPLAIN SELECT ... ดูว่า Query ใช้ Index ไหน
  • ANALYZE TABLE DemoTable; อัปเดต Cardinality (สถิติ) ให้แม่นยำ