單列索引,顧名思義也就是只有乙個欄位的索引列。
組合索引,又稱復合索引,兩個或更多個列上的索引被稱作復合索引。對於復合索引,他們都遵循左側原則,也是就是說乙個查詢可以只使用復合索引最左側的一部份。例如索引是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列,你可以索引列的字首。這更快並且比索引整個列需要較少的磁...