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

MySQL 索引增刪查改操作全總結(含前綴索引、復合索引、查看計劃)

     編輯:MySQL 資料庫相關知識

系統整理 MySQL 索引的創建、刪除、修改、查看語法與最佳實踐,涵蓋唯一/全文/空間索引、前綴索引、復合索引、存儲引擎限制等核心知識點。

一、創建索引

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
  [USING index_type] ON table_name (index_col_name[, ...]);
選項說明
UNIQUE值唯一,允許 NULL
FULLTEXT全文搜尋(MyISAM 5.6+、InnoDB 5.6+)
SPATIAL空間資料(MyISAM、InnoDB 5.7+)
USING BTREEB+ 樹,預設,支援範圍查詢
USING HASH雜湊,僅 MEMORY/HEAP 引擎,等值查詢極快

前綴索引

CREATE INDEX idx_user_username ON user (username(6));
  • 適用 CHAR/VARCHAR/TEXT/BLOB,僅索引前 N 字元。
  • MyISAM/InnoDB 前綴上限 1000 位元組;TEXT/BLOB **必須**指定前綴長度。
  • 可大幅縮小索引體積,提升寫入速度,查詢效能幾無損失(前綴選擇性高時)。

ALTER TABLE 變體

ALTER TABLE table_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name (col_list) [USING type];

二、刪除索引

ALTER TABLE table_name DROP INDEX index_name;

三、修改索引

MySQL 無直觀 ALTER INDEX,標準做法:**先刪後建**同名索引。

ALTER TABLE user DROP INDEX idx_user_username;
CREATE INDEX idx_user_username ON user (username(8));

四、查看索引

SHOW INDEX FROM table_name [FROM db_name];
-- 或
SHOW INDEX FROM db_name.table_name;

輸出關鍵欄位:Key_name、Seq_in_index(復合索引順序)、Column_name、Cardinality(基數,越高選擇性越好)、Index_type(BTREE/HASH)。

五、限制條件

  • 僅 MyISAM、InnoDB、BDB 引擎支援對 NULL 列或 TEXT/BLOB 列建索引。
  • 復合索引遵循「最左前綴」原則,順序決定查詢是否命中。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved