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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

联合索引(多列索引)[通俗易懂]

發(fā)布時(shí)間:2023/12/15 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 联合索引(多列索引)[通俗易懂] 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

聯(lián)合索引是指對(duì)表上的多個(gè)列進(jìn)行索引,聯(lián)合索引也是一棵B+樹,不同的是聯(lián)合索引的鍵值數(shù)量不是1,而是大于等于2.

最左匹配原則

假定上圖聯(lián)合索引的為(a,b)。聯(lián)合索引也是一棵B+樹,不同的是B+樹在對(duì)索引a排序的基礎(chǔ)上,對(duì)索引b排序。所以數(shù)據(jù)按照(1,1),(1,2)……順序排放。

對(duì)于selete * from table where a=XX and b=XX,顯然是可以使用(a,b)聯(lián)合索引的,

對(duì)于selete * from table where a=XX,也是可以使用(a,b)聯(lián)合索引的。因?yàn)樵谶@兩種情況下,葉子節(jié)點(diǎn)中的數(shù)據(jù)都是有序的。

但是,對(duì)于b列的查詢,selete * from table where b=XX。則不可以使用這棵B+樹索引。可以發(fā)現(xiàn)葉子節(jié)點(diǎn)的b值為1,2,1,4,1,2。顯然不是有序的,因此不能使用(a,b)聯(lián)合索引。

By the way:selete * from table where b=XX and a=XX,也是可以使用到聯(lián)合索引的,你可能會(huì)有疑問,這條語(yǔ)句并不符合最左匹配原則。這是由于查詢優(yōu)化器的存在,mysql查詢優(yōu)化器會(huì)判斷糾正這條sql語(yǔ)句該以什么樣的順序執(zhí)行效率最高,最后才生成真正的執(zhí)行計(jì)劃。所以,當(dāng)然是我們能盡量的利用到索引時(shí)的查詢順序效率最高咯,所以mysql查詢優(yōu)化器會(huì)最終以這種順序進(jìn)行查詢執(zhí)行。

優(yōu)化:在聯(lián)合索引中將選擇性最高的列放在索引最前面。

例如:在一個(gè)公司里以age 和gender為索引,顯然age要放在前面,因?yàn)樾詣e就兩種選擇男或女,選擇性不如age。

總結(jié)

以上是生活随笔為你收集整理的联合索引(多列索引)[通俗易懂]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。