資料庫索引的使用

2021-08-23 12:01:06 字數 1676 閱讀 2538

多列索引1

多列索引2

mysql中的多列索引。

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

2)多列建索引比對每個列分別建索引更有優勢,因為索引建立得越多就越佔磁碟空間,在更新資料的時候速度會更慢。另外建立多列索引時,順序也是需要注意的,應該將嚴格的索引放在前面,這樣篩選的力度會更大,效率更高。

3)組合索引的生效原則是 從前往後依次使用生效,如果中間某個索引沒有使用,那麼斷點前面的索引部分起作用,斷點後面的索引沒有起作用; 比如 where a=3 and b=45 and c=5 .... 這種三個索引順序使用中間沒有斷點,全部發揮作用; where a=3 and c=5... 這種情況下b就是斷點,a發揮了效果,c沒有效果 where b=3 and c=4... 這種情況下a就是斷點,在a後面的索引都沒有發揮作用,這種寫法聯合索引沒有發揮任何效果; where b=45 and a=3 and c=5 .... 這個跟第乙個一樣,全部發揮作用,abc只要用上了就行,跟寫的順序無關

還需注意, (a,b,c)多列索引和 (a,c,b)是不一樣的

(0) select * from mytable where a=3 and b=5 and c=4;abc三個索引都在where條件裡面用到了,而且都發揮了作用 (1) select * from mytable where c=4 and b=6 and a=3;這條語句列出來只想說明 mysql沒有那麼笨,where裡面的條件順序在查詢之前會被mysql自動優化,效果跟上一句一樣 (2) select * from mytable where a=3 and c=7;a用到索引,b沒有用,所以c是沒有用到索引效果的 (3) select * from mytable where a=3 and b>7 and c=3;a用到了,b也用到了,c沒有用到,這個地方b是範圍值,也算斷點,只不過自身用到了索引 (4) select * from mytable where b=3 and c=4;因為a索引沒有使用,所以這裡 bc都沒有用上索引效果 (5) select * from mytable where a>4 and b=7 and c=9;a用到了 b沒有使用,c沒有使用 (6) select * from mytable where a=3 order by b;a用到了索引,b在結果排序中也用到了索引的效果,前面說了,a下面任意一段的b是排好序的 (7) select * from mytable where a=3 order by c;a用到了索引,但是這個地方c沒有發揮排序效果,因為中間斷點了,使用 explain 可以看到 filesort (8) select * from mytable where b=3 order by a;b沒有用到索引,排序中a也沒有發揮索引效果

4)那如果我們分別在a和b上建立兩個列索引,mysql的處理方式就不一樣了,它會選擇乙個最嚴格的索引來進行檢索,可以理解為檢索能力最強的那個索引來檢索,另外乙個利用不上了,這樣效果就不如多列索引了。

3.索引:分為普通索引、唯一索引(主鍵是唯一索引)、聯合索引。

使用注意事項:1.建立多個單索引占用記憶體空間;

2.建立組合使用的時候必須從左到右使用必須從左到右聯絡使用(條件使用範圍的算是斷點),斷點後的索引不起作用。

資料庫 索引的使用

1.索引的含義和特點 1 索引是單獨的 儲存在磁碟上的資料結構 他們包含著對資料表裡所有記錄的引用指標。2 通過建立唯一索引,可以保證資料庫表中每一行資料的唯一性。3 可以大大的加快資料的查詢速度 4 加速表與表之間的聯絡 5 減少查詢中分組和排序的時間 6 建立索引的維護索引需要耗費時間 並且隨著...

資料庫 索引的使用

在關聯式資料庫中,索引是一種單獨的 物理的對資料庫表中一列或多列的值進行排序的一種儲存結構,它是某個表中一列或若干列值的集合和相應的指向資料頁的邏輯指標清單。索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。索引的分類 普通索引 用表中普通的列構建的索引,沒有限制 alter ta...

資料庫索引的使用

資料庫索引好比是一本書後的索引,能加快資料庫的查詢速度。例如這樣乙個查詢 select from table1 where id 44。如果沒有索引,必須遍歷整個表,直到id等於44的這一行被找到為止 有了索引之後 必須是在id這一列上建立的索引 直接在索引裡面找44,就可以得知這一行的位置,也就是...