MySQL的復(fù)合索引可以創(chuàng)建多個(gè),每個(gè)復(fù)合索引可以包含一列或多列。復(fù)合索引使用的基本原則是左側(cè)對(duì)齊原則。例如,復(fù)合索引包含A,B,C字段,實(shí)際相當(dāng)于創(chuàng)建了5個(gè)索引,即:
岳陽(yáng)縣網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),岳陽(yáng)縣網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為岳陽(yáng)縣上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的岳陽(yáng)縣做網(wǎng)站的公司定做!
那么問(wèn)題來(lái)了,如果我們創(chuàng)建兩個(gè)復(fù)合索引,復(fù)合索引1:包含A,B,C列和復(fù)合索引2:包含B,C列,MySQL如何執(zhí)行呢?
按照正常的邏輯,和復(fù)合索引的原則,應(yīng)該能命中的索引是A_B_C_index,讓我們拭目以待吧!
結(jié)果:和上次測(cè)試的不一致,這次雖然包含ABC三個(gè)列,但命中的索引是B_C_index
重要結(jié)論:當(dāng)命中兩個(gè)或者多個(gè)不同的復(fù)合索引時(shí),按照創(chuàng)建順序不同,MySQL會(huì)有不同策略來(lái)選取其中的一個(gè)復(fù)合索引。
創(chuàng)建表
該表的記錄如下:
添加兩個(gè)索引:
通過(guò) explain 來(lái)查看:
會(huì)命中兩條索引,但實(shí)際只用了 idx_v1,即使實(shí)際查詢用聯(lián)合索引更好,也依然只用了 idx_v1。
之前的測(cè)試,發(fā)現(xiàn)用的是第一個(gè),我們刪除索引,把之前的索引語(yǔ)句順序換一下:
發(fā)現(xiàn)用的是第一個(gè)。
在mysql中,索引是一種特殊的數(shù)據(jù)庫(kù)結(jié)構(gòu),由數(shù)據(jù)表中的一列或多列組合而成,可以用來(lái)快速查詢數(shù)據(jù)表中有某一特定值的記錄。
通過(guò)索引,查詢數(shù)據(jù)時(shí)不用讀完記錄的所有信息,而只是查詢索引列即可。
通過(guò)索引,查詢數(shù)據(jù)時(shí)不用讀完記錄的所有信息,而只是查詢索引列。否則,數(shù)據(jù)庫(kù)系統(tǒng)將讀取每條記錄的所有信息進(jìn)行匹配。
可以把索引比作新華字典的音序表。例如,要查“庫(kù)”字,如果不使用音序,就需要從字典的 400 頁(yè)中逐頁(yè)來(lái)找。但是,如果提取拼音出來(lái),構(gòu)成音序表,就只需要從 10 多頁(yè)的音序表中直接查找。這樣就可以大大節(jié)省時(shí)間。
因此,使用索引可以很大程度上提高數(shù)據(jù)庫(kù)的查詢速度,還有效的提高了數(shù)據(jù)庫(kù)系統(tǒng)的性能。
索引的優(yōu)缺點(diǎn)
索引有其明顯的優(yōu)勢(shì),也有其不可避免的缺點(diǎn)。
優(yōu)點(diǎn)
索引的優(yōu)點(diǎn)如下:
1、通過(guò)創(chuàng)建唯一索引可以保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性。
2、可以給所有的 MySQL 列類型設(shè)置索引。
3、可以大大加快數(shù)據(jù)的查詢速度,這是使用索引最主要的原因。
4、在實(shí)現(xiàn)數(shù)據(jù)的參考完整性方面可以加速表與表之間的連接。
5、在使用分組和排序子句進(jìn)行數(shù)據(jù)查詢時(shí)也可以顯著減少查詢中分組和排序的時(shí)間
缺點(diǎn)
增加索引也有許多不利的方面,主要如下:
1、創(chuàng)建和維護(hù)索引組要耗費(fèi)時(shí)間,并且隨著數(shù)據(jù)量的增加所耗費(fèi)的時(shí)間也會(huì)增加。
2、索引需要占磁盤空間,除了數(shù)據(jù)表占數(shù)據(jù)空間以外,每一個(gè)索引還要占一定的物理空間。如果有大量的索引,索引文件可能比數(shù)據(jù)文件更快達(dá)到最大文件尺寸。
3、當(dāng)對(duì)表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時(shí)候,索引也要?jiǎng)討B(tài)維護(hù),這樣就降低了數(shù)據(jù)的維護(hù)速度。
使用索引時(shí),需要綜合考慮索引的優(yōu)點(diǎn)和缺點(diǎn)。