MySQL單列索引和組合索引

2021-07-11 04:52:34 字數 1811 閱讀 2366

單列索引,顧名思義也就是只有乙個欄位的索引列。

組合索引,又稱復合索引,兩個或更多個列上的索引被稱作復合索引。對於復合索引,他們都遵循左側原則,也是就是說乙個查詢可以只使用復合索引最左側的一部份。例如索引是key index (a,b,c). 可以支援a | a,b| a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 .當最左側欄位是常量引用時,索引就十分有效。

假如:我們有如下的乙個表結構:

create

table test(

a int,

b int,

c int,

key a(a,b,c)

);

那麼我們看一下下列語句:

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

差: select * from test where b = 50

優: 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

觀察上訴語句,我們得出如下結論:

1. order by 中的字段必須按照sql語句中的順序來建索引;

2. order by 中的字段的排序順序必須一直,否則索引無效。

3. 建了索引不一定就有效,用實際的sql檢查一下。

我們再說說索引應該遵循的原則:

1.索引越少越好 。

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

2.最窄的字段放在鍵的左邊

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

MySQL中的單列索引和組合索引

從資料庫角度看索引 有b 樹索引和hash索引。從物理角度看索引 有聚集索引和非聚集索引。而從邏輯角度看索引 有單列索引和組合索引。單列索引 即乙個索引只包含單個列,乙個表可以有多個單列索引,但這不是組合索引。組合索引 即乙個索包含多個列。注 1.在mysql中執行查詢時,只能使用乙個索引,如果我們...

MySQL單列索引和聯合索引

所有的mysql列型別能被索引。在相關的列上的使用索引是改進select操作效能的最好方法。乙個表最多可有16個索引。最大索引長度是256個位元組,儘管這可以在編譯mysql時被改變。對於char和varchar列,你可以索引列的字首。這更快並且比索引整個列需要較少的磁碟空間。在create tab...

MySQL單列索引和聯合索引

mysql單列索引和聯合索引 所有的mysql列型別能被索引。在相關的列上的使用索引是改進select操作效能的最好方法。乙個表最多可有16個索引。最大索引長度是256個位元組,儘管這可以在編譯mysql時被改變。對於char和varchar列,你可以索引列的字首。這更快並且比索引整個列需要較少的磁...