XI16E1 1SBP260100R1001
XI16E1 1SBP260100R1001
但是現(xiàn)在問(wèn)題又來(lái)了,既然這里強(qiáng)調(diào)的是主鍵索引,那我們平時(shí)開(kāi)發(fā)中除了主鍵索引其他的索引也用的不少,這時(shí)候該怎么辦?假設(shè)你現(xiàn)在對(duì)name、age建立索引?,F(xiàn)在回顧下主鍵索引,是不是在插入數(shù)據(jù)的時(shí)候基于主鍵的順序去維護(hù)一個(gè) B+ 樹(shù)的?
而實(shí)際上非主鍵索引其原理是一樣的,MySQL 都是去維護(hù)一顆 B+ 樹(shù),說(shuō)白了,你建立多少個(gè)索引,MySQL 就會(huì)幫你維護(hù)多少的B+樹(shù)(這下是不是也突然想明白了為什么索引不能建立太多了?以前就知道不能建立太多索引,因?yàn)樗饕矔?huì)占用空間,實(shí)際上這就是根本原因)
假如現(xiàn)在真的對(duì)name+age建立索引,那此時(shí)是存放的呢?此時(shí) MySQL 根據(jù)會(huì) name+age 維護(hù)一個(gè)單獨(dú)的 B+ 樹(shù)結(jié)構(gòu),數(shù)據(jù)依舊是存放在數(shù)據(jù)頁(yè)中的,只不過(guò)是原來(lái)數(shù)據(jù)中的每條記錄寫(xiě)的是 id=xx,現(xiàn)在寫(xiě)的是name=xx,age=xx,id=xx,不管怎么樣,主鍵肯定會(huì)存放的,先來(lái)張圖壓壓驚
在插入數(shù)據(jù)的時(shí)候,MySQL 首先會(huì)根據(jù) name 進(jìn)行排序,如果 name 一樣,就根據(jù)聯(lián)合索引中的 age 去排序,如果還一樣,那么就會(huì)根據(jù) 主鍵 字段去排序。插入的原理就是這樣子的。
此時(shí)每個(gè)數(shù)據(jù)頁(yè)中的記錄存放的實(shí)際是索引字段和主鍵字段,而其他字段是不存的(為什么不存放?一樣的數(shù)據(jù)到處存放很浪費(fèi)空間的,也沒(méi)必要,所以才會(huì)有下面的索引優(yōu)化),至于查找,原理和過(guò)程跟聚簇索引一樣,這里就不再贅述,但是,下面說(shuō)的內(nèi)容卻是至關(guān)重要的:假設(shè)現(xiàn)在執(zhí)行這樣的SQL:
SELECT name FROM student WHERE name=‘wx’
那么此時(shí)的查詢(xún)是完美的,使用到了索引且不需要回表
7.回表
是這樣子的,現(xiàn)在要根據(jù) name 查找到該條記錄,且查詢(xún)的字段(即 select 后面的查詢(xún)字段)也僅僅有 name(只要是在 name,age,id 這三個(gè)字段中都可以)這個(gè)時(shí)候是能夠直接獲取到最終的記錄的
換句話說(shuō),因?yàn)槁?lián)合索引中的記錄也僅僅有 name,age,id,所以在查詢(xún)的如果也僅僅查詢(xún)這三個(gè)字段,那么在該B+樹(shù)中就能夠查詢(xún)到想要的結(jié)果了。
那現(xiàn)在假設(shè)查詢(xún)的 SQL 是這樣子的(我們假設(shè) student 中還有除了name,age,id 其他的字段 )
SELECT * FROM student WHERE name=‘wx’
那這下子就完蛋了,因?yàn)槟悻F(xiàn)在雖然根據(jù) name 很快的定位到了該條記錄,但是因?yàn)?name+age 不是聚簇索引,此時(shí)的 B+ 樹(shù)的數(shù)據(jù)頁(yè)中存放的僅僅是自己關(guān)聯(lián)的索引和主鍵索引字段,并不會(huì)存其他的字段,所以這個(gè)時(shí)候其他的屬性值是獲取不到的,這時(shí)候該怎么辦?
這種情況下,MySQL 就需要進(jìn)行回表查詢(xún)了。此時(shí) MySQL 就會(huì)根據(jù)定位到的某條記錄中的 id 再次進(jìn)行聚簇索引查找,也就是說(shuō)會(huì)根據(jù) id 去維護(hù) id 的那么 B+ 樹(shù)中查找。因?yàn)榫鄞厮饕袛?shù)據(jù)頁(yè)記錄的是一條記錄的完整的記錄,這個(gè)過(guò)程就叫回表。
再?gòu)?qiáng)調(diào)下回表的含義:根據(jù)非主鍵索引查詢(xún)到的結(jié)果并沒(méi)有查找的字段值,此時(shí)就需要再次根據(jù)主鍵從聚簇索引的根節(jié)點(diǎn)開(kāi)始查找,這樣再次查找到的記錄才是完成的。
最后,讓我一起看下 MySQL 對(duì)于非主鍵索引的維護(hù)過(guò)程:
對(duì)于非主鍵索引(一般都是聯(lián)合索引),在維護(hù) B+ 樹(shù)的時(shí)候,會(huì)根據(jù)聯(lián)合索引的字段依次去判斷,假設(shè)聯(lián)合索引為:name + address + age,那么 MySQL 在維護(hù)該索引的 B+ 樹(shù)的時(shí)候,首先會(huì)根據(jù) name 進(jìn)行排序,name 相同的話會(huì)根據(jù)第二個(gè) address 排序,如果 address 也一樣,那么就會(huì)根據(jù) age 去排序,如果 age 也一樣,那么就會(huì)根據(jù)主鍵字段值去排序,且對(duì)于非主鍵索引,MySQL 在維護(hù) B+ 樹(shù)的時(shí)候,僅僅是維護(hù)索引字段和主鍵字段。
XI16E1 1SBP260100R1001
Siemens 6ES5700-8MA11 6ES5 700-8MA11
SEW MOVIDRIVE MDS60A0015-5A3-4-00 Nr. 8264988
Siemens 6ES5 385-8MB11 6ES5 385-8MB11
Siemens 6ES5452-8MR11 6ES5 452-8MR11
Siemens 6ES5464-8MC11 6ES5 464-8MC11
Siemens 6ES5816-0AA11 6ES5 816-0AA11
Siemens 6ES5421-8MA12 6ES5 421-8MA12
KSB Amaprop V 42 - 2500 / 44 URG
KSB Amaline P 460 - 502 / 114 UMG
DEMAG Motor KBF90A12/2 KBF 90 A 12/2
Bosch PST 6100.330 L
DEMAG Motor KBF112A12/2 KBF 112 A 12/2
Siemens 3RT1015-1BE41 3RT1 015-1BE41
Indramat MAC090B-0-ND-3-C/110-A-0
PMD AC-Servomotor BL 7624
Siemens Simatic S5 6ES5460-4UA13 6ES5 460-4UA13
Siemens Simatic S5 6ES5434-4UA12 6ES5 434-4UA12
Siemens Simatic S5 6ES5451-4UA14 6ES5 451-4UA14
comat timer CS3/UC110-240V CS3 / UC110 - 240V
Siemens 3RS1800-1BW00 3RS1 800-1BW00
Siemens Simatic S5 6ES5430-4UA14 6ES5 430-4UA14
Siemens 3RT1015-1AP04-3MA0 3RT1 015-1AP04-3MA0
Siemens 3UF7010-1AB00-0 3UF7 010-1AB00-0
bbbemecanique GV2P10 GV2 P10
Siemens 3RV1011-0AA15 3RV1 011-0AA15
Siemens 3RH1131-1BM40 3RH1 131-1BM40
Ferrocontrol MAC090B-0-ND-3-C/110-B-0/S001
Ferrocontrol BMR190C6-130S BMR190C6 130S
Ferrocontrol FMR071-12-45-RNk-00
Ferrocontrol HD142C6-88S/R HD142C6 88S / R
Siemens 6ES5305-7LA11 6ES5 305-7LA11
Siemens 6ES5305-7LA11 6ES5 305-7LA11
Siemens 6ES5385-8MB11 6ES5 385-8MB11
Siemens 6ES5380-8MA11 6ES5 380-8MA11
Siemens 6ES5380-8MA11 6ES5 380-8MA11
Siemens 6ES5385-8MB11 6ES5 385-8MB11
Siemens 6ES5440-8MA22 6ES5 440-8MA22
Indramat MAC090A-0-RD-3-C/110-B-0/S001
FERROCONTROL HD142C6-88S/R HD142C6 88S / R
Siemens 6ES7195-1GF30-0XA0 6ES7 195-1GF30-0XA0
Siemens 6ES7195-1GA00-0XA0 6ES7 195-1GA00-0XA0
Siemens 3RT1035-1AP04 3RT1 035-1AP04
bbbemecanique LAD8N11 LAD8 N11
bbbemecanique LAD8N20 LAD8 N20
Siemens 3VL3725-1AA36-0AA0 3VL3 725-1AA36-0AA0
bbbemecanique LT3SA00MW LT3S A00MW
Siemens 3RT1034-1BB44 3RT1 034-1BB44
Siemens 3VL2710-2DC33-0AD1
FERROCONTROL HD142E6-130S/R HD142E6 130 S / R
FERROCONTROL FMR063-10-45-RNK-01 Servomotor
FERROCONTROL HD142C6-88S/R HD142C6 88S / R
FERROCONTROL HD70E4-64S/R HD70E4 64S / R
FERROCONTROL HD70A4-64S/C43 HD70A4 64S / C43
FERROCONTROL FMR056-01-60-RNK-00 FMR056 01 60 RNK 00
FERROCONTROL FMR071-12-45-RNK00 FMR071 12 45 RNK00
Ferrocontrol FMR038-01-60-RBK-01
FERROCONTROL HD92C4-64S HD 92C4 64 S
Siemens 6ES5430-4UA13 6ES5 430-4UA13
Siemens 6ES5460-4UA12 6ES5 460-4UA12
Siemens 6ES5355-3UA11 6ES5 355-3UA11
Siemens Simoreg 6DM1001-0WB00-2 6DM1 001-0WB00-2
Siemens 6ES5310-3AB11 6ES5 310-3AB11
Siemens S7 6ES7193-1CL10-0XA0 6ES7 193-1CL10-0XA0
Siemens 6SE6400-1BP00-0AA0 6SE6 400-0BP00-0AA0
DEUTRONIC Batterieladecomputer DBL 1700/3W-14E2
elero Econom 0 Schubkolbenantrieb 260005018
Siemens 6SE6400-1BP00-0AA0 6SE6 400-0BP00-0AA0
Siemens S7 6ES7132-1BL00-0XB0 6ES7 132-1BL00-0XB0
WITTUR FSV 4 I 011A HA/B4/IB-AG BKV4I011HA20A00-46
SEW KHZ57 CM90L/BR/TF/AS1H/KK Kegelradgetriebe
WITTUR FSV 4 I 002A HA/B4/IB-AG BKV4I002HA20A00-270
Siemens S7 6ES7132-1BL00-0XB0 6ES7 132-1BL00-0XB0
SMB Servomotor SBK7-0500-30-0
Siemens 6ES5434-4UA12 6ES5 434-4UA12
Siemens 6ES5300-3AB11 6ES5 300-3AB11
Siemens 6ES5460-4UA13 6ES5 460-4UA13
Siemens 6ES5301-3AB13 6ES5 301-3AB13
Siemens 6GK1143-0AA01 6GK1 143-0AA01
Siemens 6ES5470-4UC12 6ES5 470-4UC12
Siemens 6ES5463-4UA12 6ES5 463-4UA12
Siemens 6ES5463-4UA12 6ES5 463-4UA12
Siemens 6ES5946-3UA23 6ES5 946-3UA23
Siemens 6AV1222-0AD20 6AV1 222-0AD20
Siemens 6ES5951-7LD12 6ES5 951-7LD12
Siemens 6ES5951-7LB14 6ES5 951-7LB14
Siemens 6ES5101-8UA13 6ES5 101-8UA13
Siemens 6ES5101-8UA13 6ES5 101-8UA13
Siemens 6ES5410-7AA11 6ES5 410-7AA11
Siemens 6ES5464-8MC11 6ES5 464-8MC11
Siemens 6ES5464-8MC11 6ES5 464-8MC11
Siemens Simatic S5 6ES5951-7LB21 6ES5 951-7LB21
Siemens Sinec 6GK1100-0AJ00 6GK1 100-0AJ00
Siemens 6AV3020-1EL00 6AV3 020-1EL00
Siemens 6GK1500-0AA00 6GK 1500-0AA00
Siemens 6ES5375-OLC11 6ES5 375-OLC11
Siemens Simatic S5 6ES5312-3AB11 6ES5 312-3AB11
Siemens 6ES5451-8MA11 6ES5 451-8MA11
Siemens 6ES5464-8ME11 6ES5 464-8ME11
Siemens 6ES5460-4UA13 6ES5 460-4UA13
Yaskawa Electric JZNC-XPP02B JZNCXPP02B
Siemens S5-95U 6ES5095-8MA03 6ES5 095-8MA03
Siemens 6ES5377-0AB41 6ES5 377-0AB41
Siemens 6ES7460-1BA00-0AB0 6ES7 460-1BA00-0AB0
Siemens 6ES7421-1BL00-0AA0 6ES7 421-1BL00-0AA0
Siemens 6ES5946-3UA22 6ES5 946-3UA22
Siemens 6ES5451-4UA12 6ES5 451-4UA12
Siemens 6ES5947-3UA22 6ES5 947-3UA22
Siemens 6ES5951-7LD12 6ES5 951-7LD12
Siemens 7UT5121-5CA00-0B/JH 7UT51 21-5CA00-0B/JH
Siemens 6ES5946-3UA22 6ES5 946-3UA22
Siemens 7SV5121-5CA01-0C/CC 7SV51 21-5CA01-0C/CC
Siemens 6ES7460-3AA00-0Ab0 6ES7 460-3AA00-0Ab0
Siemens 7UM5150-5CB01-0BA0/FF 7UM51 50-5CB01-0BA0/FF
Siemens 6ES5430-7LA12 6ES5 430-7LA12
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“機(jī)電號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of JDZJ Hao, which is a social media platform and only provides information storage services.