聯合索引
概念聯合索引又叫復合索引,即乙個覆蓋表中兩列或者以上的索引,例如:
index_name(column a,column b)
1建立方式
執行alter table語句時建立
alter table table_name add index index_name(column_list)
1index_name是建立的聯合索引的名字,可以沒有,沒有的話系統會根據該索引包含的第一列來賦名稱;table_name是要建立該索引的表名;column_list為該索引所包含的表的欄位名。
執行create index語句時建立
create index index_name on table_name(column_list)
1此種情況是在表已經建立好的情況下,再來建立復合索引。index_name和column_list同上;table_name是要建立索引的表名。
例子create table stu
(id int,
name varchar(10),
age int,
primary key(id)
);alter table stu add index lianheindex (name,age);
或者create index lianheindex on stu(name,age);12
3456
78910
執行上面的語句後在表stu中就建立好了乙個名叫lianheindex聯合索引,在使用聯合索引的時候,我們遵守乙個最左原則,即index lianheindex (name,age)支援name|name age組合查詢,而不支援age查詢;換句話說,在執行
select * from stu where name=?1或者
select * from stu where name=? and age=?
1時聯合索引才會有效,如果執行
select * from stu where age=?
1則聯合索引不會生效。
如果我們是在name和age上分別建立單個索引的話,由於mysql查詢每次只能使用乙個索引,所以雖然這樣已經相對不做索引時全表掃瞄提高了很多效率,但是如果在name、age兩列上建立復合索引的話將帶來更高的效率。如果我們建立了(name, age)的復合索引,那麼其實相當於建立了(name)、(name,age)兩個索引,這被稱為最佳左字首特性。
因此我們在建立復合索引時應該將最常用作限制條件的列放在最左邊,依次遞減。
注意事項
只要列中包含有null值都將不會被包含在索引中
復合索引中只要有一列含有null值,那麼這一列對於此復合索引就是無效的,所以我們在資料庫設計時盡可能不要讓字段的預設值為null。
mysql聯合索引詳解 mysql 聯合索引詳解
聯合索引又叫復合索引。對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當最左側欄位是常量引用時,索引就十分有效。兩個或更多個...
mysql聯合索引技術 mysql 聯合索引詳解
聯合索引又叫復合索引。對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當最左側欄位是常量引用時,索引就十分有效。兩個或更多個...
mysql教程聯合索引 mysql聯合索引詳解
歡迎進入linux社群論壇,與200萬技術人員互動交流 進入 聯合索引又叫復合索引。對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合 歡迎進入linux社群論壇...