創(chuàng)新互聯(lián)www.cdcxhl.cn八線(xiàn)動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!
mysql中聚簇索引與非聚簇索引的區(qū)別是什么?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
通常情況下,建立索引是加快查詢(xún)速度的有效手段。但索引不是萬(wàn)能的,靠索引并不能實(shí)現(xiàn)對(duì)所有數(shù)據(jù)的快速存取。事實(shí)上,如果索引策略和數(shù)據(jù)檢索需求嚴(yán)重不符的話(huà),建立索引反而會(huì)降低查詢(xún)性能。因此在實(shí)際使用當(dāng)中,應(yīng)該充分考慮到索引的開(kāi)銷(xiāo),包括磁盤(pán)空間的開(kāi)銷(xiāo)及處理開(kāi)銷(xiāo)(如資源競(jìng)爭(zhēng)和加鎖)。例如,如果數(shù)據(jù)頻繁的更新或刪加,就不宜建立索引。
mysql聚簇索引和非聚簇索引的介紹:
聚簇索引:
表數(shù)據(jù)按順序存儲(chǔ),即索引順序和表記錄物理存儲(chǔ)順序一致。
聚簇索引 葉子節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)行和B-Tree索引。
在一個(gè)表中只能有一個(gè)聚簇索引,因?yàn)檎鎸?shí)物理存儲(chǔ)順序只能有一種。
聚簇索引是稀疏索引,數(shù)據(jù)頁(yè)上一級(jí)索引存儲(chǔ)是頁(yè)指針,非行指針。
非聚簇索引:
表數(shù)據(jù)存儲(chǔ)順序與索引順序無(wú)關(guān)。
對(duì)于非聚簇索引,葉節(jié)點(diǎn)包含行主鍵值和主鍵值作為指向行的“指針”,通過(guò)二級(jí)索引查找,兩次B-Tree查找 InnoDB自適應(yīng)哈希索引能夠減少這樣重復(fù)工作。
非聚簇索引是密集索引,在數(shù)據(jù)頁(yè)的上一級(jí)索引頁(yè)它為每一個(gè)數(shù)據(jù)行存儲(chǔ)一條記錄。
總結(jié)一下:聚集索引是一種稀疏索引,數(shù)據(jù)頁(yè)上一級(jí)的索引頁(yè)存儲(chǔ)的是頁(yè)指針,而不是行指針。而對(duì)于非聚集索引,則是密集索引,在數(shù)據(jù)頁(yè)的上一級(jí)索引頁(yè)它為每一個(gè)數(shù)據(jù)行存儲(chǔ)一條索引記錄。
1、向表中插入新數(shù)據(jù)行
如果一張表沒(méi)有聚集索引,那么它被稱(chēng)為“堆集”(Heap)。這樣的表中的數(shù)據(jù)行沒(méi)有特定的順序,所有的新行將被添加到表的末尾位置。而建立了聚簇索引的數(shù)據(jù)表則不同:最簡(jiǎn)單的情況下,插入操作根據(jù)索引找到對(duì)應(yīng)的數(shù)據(jù)頁(yè),然后通過(guò)挪動(dòng)已有的記錄為新數(shù)據(jù)騰出空間,最后插入數(shù)據(jù)。如果數(shù)據(jù)頁(yè)已滿(mǎn),則需要拆分?jǐn)?shù)據(jù)頁(yè),調(diào)整索引指針(且如果表還有非聚集索引,還需要更新這些索引指向新的數(shù)據(jù)頁(yè))。而類(lèi)似于自增列為聚集索引的,數(shù)據(jù)庫(kù)系統(tǒng)可能并不拆分?jǐn)?shù)據(jù)頁(yè),而只是簡(jiǎn)單的新添數(shù)據(jù)頁(yè)。
2、從表中刪除數(shù)據(jù)行
對(duì)刪除數(shù)據(jù)行來(lái)說(shuō):刪除行將導(dǎo)致其下方的數(shù)據(jù)行向上移動(dòng)以填充刪除記錄造成的空白。如果刪除的行是該數(shù)據(jù)頁(yè)中的最后一行,那么該數(shù)據(jù)頁(yè)將被回收,相應(yīng)的索引頁(yè)中的記錄將被刪除。對(duì)于數(shù)據(jù)的刪除操作,可能導(dǎo)致索引頁(yè)中僅有一條記錄,這時(shí),該記錄可能會(huì)被移至鄰近的索引頁(yè)中,原索引頁(yè)將被回收,即所謂的“索引合并”。
關(guān)于mysql中聚簇索引與非聚簇索引的區(qū)別是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
本文題目:mysql中聚簇索引與非聚簇索引的區(qū)別是什么-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://www.chinadenli.net/article26/dceojg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、網(wǎng)站維護(hù)、定制開(kāi)發(fā)、App開(kāi)發(fā)、自適應(yīng)網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容