首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 索引類型全解析:Primary、Unique、Normal、Fulltext、Spatial 差異與選型指南

     編輯:MySQL 綜合教學

MySQL 索引類型全解析

索引是查詢性能的關鍵,MySQL 提供五大索引類型,各有適用場景與限制。本文系統梳理定義、差異、創建語法與選型建議。

五大索引類型對比

類型關鍵字允許 NULL允許重複典型場景
主鍵索引PRIMARY KEY否否表唯一標識,聚簇索引(InnoDB)
唯一索引UNIQUE是否業務唯一約束(郵箱、身份證)
普通索引INDEX / KEY是是通用查詢加速
全文索引FULLTEXT是是長文本搜索(文章、日誌),MyISAM/InnoDB 5.6+ 支持
空間索引SPATIAL否是地理空間數據(GIS),需配合幾何類型

創建語法速查

-- 建表時創建
CREATE TABLE t (
  id INT PRIMARY KEY,
  email VARCHAR(100) UNIQUE,
  name VARCHAR(50),
  content TEXT,
  location POINT,
  INDEX idx_name (name),
  FULLTEXT idx_content (content),
  SPATIAL idx_loc (location)
) ENGINE=InnoDB;

-- 後續添加
ALTER TABLE t ADD INDEX idx_name (name);
ALTER TABLE t ADD FULLTEXT idx_content (content);

選型決策樹

  1. 業務主鍵 → PRIMARY KEY
  2. 業務唯一性約束 → UNIQUE
  3. 長文本模糊搜索 → FULLTEXT(短文本用 LIKE+普通索引即可)
  4. 經緯度/幾何運算 → SPATIAL
  5. 通用 WHERE/JOIN/ORDER BY 加速 → INDEX

避坑提醒

  • InnoDB 主鍵即聚簇索引,建議用自增整型,避免 UUID 導致頁分裂
  • FULLTEXT 索引需 MATCH() AGAINST() 語法,不支援 LIKE
  • SPATIAL 索引列必須 NOT NULL
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved