首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 索引基礎操作大全:六大類型、三種創建方式、刪除與驗證全覆蓋

     編輯:MySQL 資料庫相關知識

六大索引類型

類型關鍵字適用場景
普通索引INDEX / KEY無約束,純加速查詢
唯一索引UNIQUE INDEX值唯一,允許 NULL(多個 NULL)
主鍵索引PRIMARY KEY唯一+非空,聚簇索引(InnoDB)
全文索引FULLTEXT INDEXCHAR/VARCHAR/TEXT 大文本搜尋(MyISAM/5.6+ InnoDB)
單列索引—單欄位
多列/組合索引—多欄位,遵循最左前綴原則
空間索引SPATIAL INDEX幾何數據(MyISAM/InnoDB 5.7+)

何時創建索引

  • WHERE 條件欄位
  • GROUP BY / ORDER BY 欄位
  • 關聯查詢的 JOIN ON 欄位(主鍵/外鍵)
  • 唯一性約束欄位

三種創建方式

-- 1. 建表時
CREATE TABLE t (
    id INT,
    name VARCHAR(20),
    INDEX idx_name (name)
);

-- 2. 獨立語句
CREATE INDEX idx_name ON t (name);
CREATE UNIQUE INDEX uk_email ON t (email);

-- 3. ALTER TABLE
ALTER TABLE t ADD INDEX idx_name (name);
ALTER TABLE t ADD UNIQUE INDEX uk_email (email);

多列索引注意事項

CREATE INDEX idx_a_b_c ON t (a, b, c);
-- 僅當 WHERE 條件包含 a(最左列)時生效
-- WHERE a=1 AND b=2 ✅
-- WHERE b=2 ❌
-- WHERE a=1 AND c=3 ✅ (用到 a,c 可能用到索引下推)

查看與刪除

SHOW INDEX FROM t\G;
-- 關鍵欄位:Key_name、Column_name、Cardinality(基數)、Index_type

DROP INDEX idx_name ON t;

驗證索引生效

EXPLAIN SELECT * FROM t WHERE name='test'\G;
-- type=ref/eq_ref、key=idx_name、rows=1 表示命中

存儲引擎差異

  • InnoDB / MyISAM:支援 BTREE(預設)。
  • MEMORY:預設 HASH,可指定 BTREE。
  • InnoDB 最大索引長度 3072 字節(innodb_large_prefix=ON 時),單列前綴長度建議 ≤ 767 字節(utf8mb3)或 191 字符(utf8mb4)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved