MySQL 復合索引該怎麼用

2021-10-05 17:20:14 字數 935 閱讀 6056

本文均已學習為主,不考慮實際業務。若在實際業務中,還需考慮增刪改的代價和實際需要。

資料量大,查詢業務多的

where從句

group by從句

order by從句

on從句

中的字段,可以考慮建索引。

alter

table t add

index abc(a,b,c)

;

這裡有乙個原則:離散度大的列放在前

離散度:唯一值多,離散度越大

(eg:id>姓名》年齡》性別)

注意避免重複索引,冗餘索引

(eg:(a,b,c)索引包含了(a)索引(最左字首),故索引(a)就是冗餘索引)

覆蓋索引:sql只需要通過索引就可以返回查詢所需要的資料,避免了回表。

eg:select age from user where name='小松'

在這條語句中,如果加入索引(name,age),就可以使用覆蓋索引,一次搜尋索引樹得出結果。

最左字首原則:就是左邊優先唄

索引下推:mysql5.6之後加入的,可以減少回表次數。

eg:select * from user where age=18 and ***='男'id

name

age***0小

18男1松

18男2谷

18女3弟

19女在有(age,***)的聯合索引前提下

如果沒有索引下推,需要回表3次:根據age=18查出三個id,回到主鍵索引查出整條資料,在篩選滿足***='男』的兩個資料。

如果有索引下推,需回表2次:同時根據age=18和***='男』查出兩個id,後邊同上。

mysql復合索引怎麼理解 關於復合索引的一些理解

前面單獨寫了關於復合索引中的最左字首原則的仔細分析,接下來我們就復合索引進行更深一步的了解。這裡的復合索引指的就是組合索引。首先,我們重溫一下復合索引的基本概念,就是在兩個及以上字段建立乙個索引。它的存在主要是為了多條件的查詢,比如說where後面加了好幾個條件,乙個是a欄位相關的,乙個是b欄位相關...

mysql 復合索引

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

mysql索引怎麼用 mysql怎麼使用索引?

在排序操作中如果能使用到索引來排序,那麼可以極大的提高排序的速度,要使用索引來排序需要滿足以下兩點即可。1 order by子句後的列順序要與組合索引的列順序一致,且所有排序列的排序方向 正序 倒序 需一致 2 所查詢的字段值需要包含在索引列中,及滿足覆蓋索引。通過例子來具體分析 在user tes...