組合索引與字首索引
阿新 • • 發佈:2020-07-17
注意,這兩種稱呼是對建立索引技巧的一種稱呼,並非索引的型別 。
組合索引
單列欄位的記錄不唯一,但多個欄位的記錄組合到一起,是唯一的 。
# 新增組合(聯合)索引 mysql> alter table students add index union_key(gender,hobby,phone); # 刪除組合索引 mysql> alter table students drop index union_key; # 檢視索引 mysql> show index from students; +----------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +----------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | students | 0 | PRIMARY | 1 | id | A | 7 | NULL | NULL | | BTREE | | | | students | 1 | union_key | 1 | gender | A | 7 | NULL | NULL | YES | BTREE | | | | students | 1 | union_key | 2 | hobby | A | 7 | NULL | NULL | YES | BTREE | | | | students | 1 | union_key | 3 | phone | A | 7 | NULL | NULL | YES | BTREE | | | +----------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 4 rows in set (0.00 sec) # 組合索引的使用 前提:使用 where 條件搜尋的內容不超過全部記錄的 15% 走索引 gender,hobby,phone # hobby,phone,gender // 可以正序排列成上一條件 gender,hobby # hobby,gender // 可以正序排列成上一條件 gender 不走索引 gender,phone # phone,gender // 不能從頭正序排列,和上一條件本質相同 hobby,phone # phone,hobby // 不能從頭正序排列,和上一條本件質相同 hobby phone