數據結構(B+樹),加速查詢、排序、分組、連接。代價:寫入(INSERT/UPDATE/DELETE)需同步維護索引,佔用磁盤空間。
-- 唯一索引 CREATE UNIQUE INDEX idx_name ON table_name (col1, col2); -- 普通索引 CREATE INDEX idx_name ON table_name (col1); -- 降序索引(MySQL 8.0+) CREATE INDEX idx_desc ON table_name (col1 DESC);
| 語句 | 效果 |
|---|---|
| ALTER TABLE tbl ADD PRIMARY KEY (cols) | 主鍵,非空唯一 |
| ALTER TABLE tbl ADD UNIQUE idx_name (cols) | 唯一索引,允許多 NULL |
| ALTER TABLE tbl ADD INDEX idx_name (cols) | 普通索引 |
| ALTER TABLE tbl ADD FULLTEXT idx_name (cols) | 全文索引(MyISAM/InnoDB 5.6+) |
| ALTER TABLE tbl DROP INDEX idx_name | 刪除索引 |
| ALTER TABLE tbl DROP PRIMARY KEY | 刪除主鍵 |
SHOW INDEX FROM table_name\G
關鍵列:Key_name、Column_name、Cardinality(基數,越大選擇性越好)、Index_type(BTREE/FULLTEXT)。
(a,b,c) 支持 a、a,b、a,b,c 查詢,不支持 b、c、b,c。EXPLAIN 顯示 Using index)。WHERE col LIKE '%abc%'(前導通配符)WHERE func(col) = val(函數/運算作用於列)WHERE varchar_col = 123OR 連接非同一索引列