mysql索引的建立以及聯合索引的一些用法

2021-10-22 16:33:01 字數 1911 閱讀 4691

聯合索引又叫復合索引。兩個或更多個列上的索引被稱作復合索引。

對於復合索引:mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index (a,b,c). 可以支援a | a,b| a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 .當最左側欄位是常量引用時,索引就十分有效。

利用索引中的附加列,您可以縮小搜尋的範圍,但使用乙個具有兩列的索引 不同於使用兩個單獨的索引。

復合索引的結構與**簿類似,人名由姓和名構成,**簿首先按姓氏對進行排序,然後按名字對有相同姓氏的人進行排序。如果您知 道姓,**簿將非常有用;如果您知道姓和名,**簿則更為有用,但如果您只知道名不姓,**簿將沒有用處。

所以說建立復合索引時,應該仔細考慮列的順序。對索引中的所有列執行搜尋或僅對前幾列執行搜尋時,復合索引非常有用;僅對後面的任意列執行搜尋時,復合索引則沒有用處。

如:建立 姓名、年齡、性別的復合索引。

優: select * from test where a=10 and b>50

差: select * from test where a50

優: select * from test order by a

差: select * from test order by b

差: select * from test order by c

優: select * from test where a=10 order by a

優: select * from test where a=10 order by b

差: select * from test where a=10 order by c

優: select * from test where a>10 order by a

差: select * from test where a>10 order by b

差: select * from test where a>10 order by c

優: select * from test where a=10 and b=10 order by a

優: select * from test where a=10 and b=10 order by b

優: select * from test where a=10 and b=10 order by c

優: select * from test where a=10 and b=10 order by a

優: select * from test where a=10 and b>10 order by b

差: select * from test where a=10 and b>10 order by c

索引越少越好 (原因:主要在修改資料時,第個索引都要進行更新,降低寫速度。)

最窄的字段放在鍵的左邊

避免file sort排序,臨時表和表掃瞄.

首先建立乙個表:create table t1 (id int primary key,username varchar(20),password varchar(20));

建立單個索引的語法:create index 索引名 on 表名(欄位名)

索引名一般是:表名_欄位名

給id建立索引:create index t1_id on t1(id);

建立聯合索引的語法:create index 索引名 on 表名(欄位名1,欄位名2)

給username和password建立聯合索引:create index t1_username_password on t1(username,password)

mysql建立聯合索引 mysql之聯合索引

mysql之聯合索引測試 前期準備 建立聯合索引?create table test id bigint 16 not null auto increment,aaa varchar 16 not null,bbb varchar 16 not null,ccc int 11 not null,pr...

MySql建立聯合索引

首先建立乙個表 create table t1 id int primary key,username varchar 20 password varchar 20 建立單個索引的語法 create index 索引名 on 表名 欄位名 索引名一般是 表名 欄位名 給id建立索引 create i...

mysql 建立空索引報錯 Mysql建立索引

建立索引 alter table tbl name add primary key column list 該語句新增乙個主鍵,這意味著索引值必須是唯一的,且不能為 null。alter table tbl name add unique index name column list 這條語句建立索...