ALTER TABLE table_name ADD KEY(column_name(prefix_length));
MySQL 前綴索引能有效減小索引文件的大小,提高索引的速度。但是前綴索引也有它的壞處:MySQL 不能在 ORDER BY 或 GROUP BY 中使用前綴索引,也不能把它們用作覆蓋索引(Covering Index)。
1.6、索引合并
深入理解 index merge 是使用索引進行優化的重要基礎之一。理解了 index merge 技術,我們才知道應該如何在表上建立索引。
為什么會有index merge?
我們的 where 中可能有多個條件(或者join)涉及到多個字段,它們之間進行 AND 或者 OR,那么此時就有可能會使用到 index merge 技術。index merge 技術如果簡單的說,其實就是:對多個索引分別進行條件掃描,然后將它們各自的結果進行合并(intersect/union)。
MySQL5.0之前,一個表一次只能使用一個索引,無法同時使用多個索引分別進行條件掃描。但是從5.1開始,引入了 index merge 優化技術,對同一個表可以使用多個索引分別進行條件掃描。
索引合并是指分別創建的兩個索引,在某一次查詢中臨時合并成一條索引。
# 索引合并
create index ind_id on 表名(id);
create index ind_email on 表名(email);
select * from 表名 where id=100 or email = 'pamela@123.com' # 索引合并,臨時把兩個索引ind_id和ind_email合并成一個索引