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

MySQL CREATE INDEX 語法全解析:類型、長度、排序、引擎差異

     編輯:MySQL 資料庫相關知識

標準語法

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [USING {BTREE|HASH|RTREE}]
    ON tbl_name (col_name[(length)] [ASC|DESC], ...)

參數詳解

子句說明
UNIQUE值唯一,允許多個 NULL(除主鍵外)
FULLTEXT全文索引,僅 MyISAM/InnoDB 5.6+,配合 MATCH() AGAINST()
SPATIAL空間索引,僅 MyISAM/InnoDB 5.7+,列需 NOT NULL
col_name(length)前綴索引,CHAR/VARCHAR/BINARY/VARBINARY 必填,TEXT/BLOB 必填
ASC|DESCMySQL 8.0+ 支持降序索引,優化 ORDER BY col DESC
USING BTREE|HASH|RTREEInnoDB 僅支持 BTREE;MEMORY/HEAP 可選 HASH;SPATIAL 固定 RTREE

實戰示例

-- 普通索引
CREATE INDEX idx_name ON user(name);

-- 前綴索引(節省空間、提升寫入)
CREATE INDEX idx_email_prefix ON user(email(10));

-- 組合索引(最左前綴原則)
CREATE INDEX idx_a_b_c ON t(a,b,c);

-- 唯一索引
CREATE UNIQUE INDEX uk_phone ON user(phone);

-- 全文索引(需 MySQL 5.6+ InnoDB)
ALTER TABLE article ADD FULLTEXT INDEX ft_content (content);

引擎限制速查

引擎支持類型最大鍵長備註
InnoDBBTREE767 字節(innodb_large_prefix=ON 時 3072)主鍵聚簇,二級索引存主鍵值
MyISAMBTREE, FULLTEXT, SPATIAL1000 字節非聚簇,索引存行指針
MEMORYHASH, BTREE—HASH 適合全鍵精確查找

常見誤區

  • 不能用 CREATE INDEX 建主鍵,必須 ALTER TABLE t ADD PRIMARY KEY (col)。
  • 前綴長度單位是「字符」而非字節,utf8mb4 時 1 字符=4 字節,易超 767 限制。
  • DESC 索引僅 8.0+ 有效,舊版忽略不報錯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved