日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql联合索引顺序调整_MySQL 关于联合索引的字段顺序规则讨论

發布時間:2023/12/9 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql联合索引顺序调整_MySQL 关于联合索引的字段顺序规则讨论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聯合索引的順序,難道不是哪個查詢條件最多用就放在前面的嗎?

比如商品有三個分類A,B,C,類似「界門綱目科屬種」那樣,越左類別越大。還有一個是商品來源D,不一定會用于查詢條件中。

舉個例子,A代表衣服,B代表衣服下的長袖,C代表衣服下的紅色的長袖。

如果這三個字段是商品的三個屬性,并且要建立索引的話,必然是A,B,C的順序,并且中間不應該有比如D字段(商品來源)

因為假設你的索引是這樣建立的D,A,B,C,那么當你的查詢條件中沒有D字段的話,那么這個索引將不會被使用到。

假設2:索引是這樣建立的A,B,D,C,當查詢語句為:

select * from goods where A='衣服' and B='長袖' and C='紅色';

雖然會使用到這個索引,但是這個索引只用到了A,B,因為D字段不作為查詢條件,所以C字段也沒有使用到。

這就是最左匹配原則的一種。

再多的,可以再去了解一下數據庫索引的數據結構,以及其他最左匹配原則,這里列一下。

假設有這樣一個索引——(a,b,c),針對下面的5個關于最左原則的解釋,做出舉例。

1.必須用到索引的第一個字段,如select * from table where b='b' and c='c',不會使用到索引。

2.對于索引的第一個字段,用like時左邊必須是固定值,通配符只能出現在右邊,如select * from table where a like '%a%'不會使用到索引,而select * from table where a like 'a%'則會使用到索引。

3.如果在字段前加了函數或在字段前嵌入了表達式,則不會使用索引。如select * from table where trim(a)>1不會使用索引,select * from table where a+1>1也不會使用索引,而select * from table where a>2會使用到索引。

4.索引的使用與where語句中字段出現的順序無關,只與是否使用到索引相關字段有關。如select * from table where b='b' and a='a'也會使用索引。

5.使用到索引第一個字段的不等于表達式,即使其他字段不是索引字段也會使用到索引。如select * from table where a!='a' and ddd='ddd'會使用到索引。

上述引用文字來源于丁奇專欄《MySQL實戰45講》

總結

以上是生活随笔為你收集整理的mysql联合索引顺序调整_MySQL 关于联合索引的字段顺序规则讨论的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。