新聞中心
索引是幫助MySQL 高效獲取信息的數(shù)據(jù)結(jié)構(gòu)(有序)。無索引時(shí)全表按順序查找 效率低, 有索引時(shí)按照建立的索引來查找 效率高(圖書館書架標(biāo)識(shí)、書本目錄),
創(chuàng)新互聯(lián)長(zhǎng)期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為龍門企業(yè)提供專業(yè)的網(wǎng)站制作、做網(wǎng)站,龍門網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。1.優(yōu)缺點(diǎn)優(yōu)點(diǎn):
(1)提高了數(shù)據(jù)檢索的效率, 降低了數(shù)據(jù)庫IO成本。
(2)按照索引列排序,降低了數(shù)據(jù)排序的成本、cpu的消耗。
缺點(diǎn):
(1)索引列同樣要占用空間
(2)索引大大提高了查詢效率,但每次修改,插入、刪除數(shù)據(jù),效率會(huì)降低(要修改索引)。
不同的存儲(chǔ)引擎有不同的索引結(jié)構(gòu),主要的有:B+Tree索引、Hash索引、R-Tree(空間索引)、Full-text(全文索引)。
在MySQL中默認(rèn)使用InnoDB存儲(chǔ)引擎,該存儲(chǔ)引擎默認(rèn)的索引結(jié)構(gòu)是 B+Tree。
為什么選擇B+Tree作為索引結(jié)構(gòu)?
1、二叉樹
(1)當(dāng)順序插入數(shù)據(jù)時(shí)會(huì)行形成一條鏈表,層級(jí)深效率低。
(2)每個(gè)節(jié)點(diǎn)只有兩個(gè)子節(jié)點(diǎn),當(dāng)數(shù)據(jù)量大時(shí),樹的層數(shù)會(huì)變多。
2、紅黑樹
概念:左孩子節(jié)點(diǎn)比父節(jié)點(diǎn)小,右孩子節(jié)點(diǎn)比父節(jié)點(diǎn)大。
雖然解決了順序插入的問題
但 當(dāng)數(shù)據(jù)量大時(shí),層級(jí)較深,檢索效率低。
3、B-Tree(多路平衡查找樹)
以度為 5的樹為例,每個(gè)節(jié)點(diǎn)最多存放4個(gè)key,5個(gè)指針。
提示: 當(dāng)節(jié)點(diǎn)中的key數(shù)量達(dá)到 度數(shù)時(shí), 處于中間的key會(huì)向上分裂,兩邊的key會(huì)變成它的左右孩子節(jié)點(diǎn),如果它還有父節(jié)點(diǎn),則加入父節(jié)點(diǎn)中。
4、B+Tree
所有節(jié)點(diǎn)均會(huì)出現(xiàn)在葉子節(jié)點(diǎn)中且形成單鏈表(到MySQL中形成雙向鏈表),父節(jié)點(diǎn)不存放數(shù)據(jù), 只存放key。
每個(gè)節(jié)點(diǎn)是在一個(gè)頁中,一個(gè)頁默認(rèn)16KB。
hash索引就是采用hash算法實(shí)現(xiàn)的hash表。
hash索引的特點(diǎn):
(1) 只能用于對(duì)等計(jì)較(= 、 in), 不能用于范圍查詢。
(2)無法利用索引完成排序操作,(B+Tree可以利用按索引排序的序列直接返回不用再到內(nèi)存排序)
(3)查詢效率高,通常只需一次查詢
在MySQL中, Hash索引支持的是Memory引擎, 而InnoDB有自適應(yīng)hash功能,根據(jù)B+Tree索引在指定條件下自動(dòng)創(chuàng)建。
五、適合創(chuàng)建索引的情況(1)在數(shù)據(jù)量大、使用頻繁、用以縮小查詢范圍的字段創(chuàng)建索引。
(2)在頻繁使用、常作為where、order by、 group by 條件的列需要排序的字段上創(chuàng)建索引。
(3)對(duì)于長(zhǎng)度過長(zhǎng)的列可以創(chuàng)建前綴索引。
(4)盡量使用聯(lián)合索引,單列索引雖然能查找到數(shù)據(jù),但僅能返回一列數(shù)據(jù),經(jīng)常需要回表查詢(如果不是主鍵列),且可以減少存儲(chǔ)空間,使用聯(lián)合索引通??梢愿采w索引。
(5)字段重復(fù)值多(區(qū)分度低),的列不適應(yīng)創(chuàng)建索引。
(6)不適合創(chuàng)建過多的索引,索引也需要占空間,同時(shí)需要維護(hù)索引,影響更改效率。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁題目:MySQL中的索引-創(chuàng)新互聯(lián)
本文路徑:http://www.dlmjj.cn/article/ceopoj.html