mysql : 使用B+樹(shù)建立索引。
數(shù)據(jù)是存儲(chǔ)在磁盤(pán)上的肮蛹,操作系統(tǒng)讀取磁盤(pán)的最小單位是塊愕贡,如果沒(méi)有索引,會(huì)加載所有的數(shù)據(jù)到內(nèi)存贰锁,依次進(jìn)行檢索赃梧,加載的總數(shù)據(jù)會(huì)很多,磁盤(pán)IO多豌熄。
如果有了索引授嘀,會(huì)以學(xué)號(hào)為key創(chuàng)建索引,MySQL采用B+樹(shù)結(jié)構(gòu)存儲(chǔ)锣险,一方面加載的數(shù)據(jù)只有學(xué)號(hào)和主鍵ID蹄皱,另一方便采用了多叉平衡樹(shù),定位到指定學(xué)號(hào)會(huì)很快芯肤,根據(jù)關(guān)聯(lián)的ID可以快速定位到對(duì)應(yīng)行的數(shù)據(jù)巷折,所以檢索的速度會(huì)很快,因?yàn)榧虞d的總數(shù)據(jù)很少崖咨,磁盤(pán)IO少锻拘。
可見(jiàn),索引可以大大減少檢索數(shù)據(jù)的范圍、減少磁盤(pán)IO署拟,使查詢速度很快婉宰,因?yàn)榇疟P(pán)IO是很慢的,是由它的硬件結(jié)構(gòu)決定的推穷。
索引的優(yōu)缺點(diǎn):
索引主要分為四種:普通索引心包、主鍵、唯一索引馒铃、復(fù)合索引
建立索引的優(yōu)點(diǎn):
1蟹腾、索引能夠提高數(shù)據(jù)檢索的效率,降低數(shù)據(jù)庫(kù)的IO成本骗露。
2岭佳、通過(guò)創(chuàng)建唯一性索引,可以保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性萧锉,創(chuàng)建唯一索引
3珊随、在使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí),同樣可以顯著減少查詢中分組和排序的時(shí)間
4柿隙、加速兩個(gè)表之間的連接叶洞,一般是在外鍵上創(chuàng)建索引
建立索引的缺點(diǎn):
1、需要占用物理空間,建立的索引越多需要的空間越大
2禀崖、創(chuàng)建索引和維護(hù)索引要耗費(fèi)時(shí)間衩辟,這種時(shí)間隨著數(shù)據(jù)量的增加而增加
一般需要建立索引的字段
1、經(jīng)常用在where語(yǔ)句之后的字段
2波附、主鍵或者外鍵
3艺晴、字段具有唯一性的時(shí)候建立唯一性索引
4、在經(jīng)常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引掸屡,因?yàn)樗饕呀?jīng)排序封寞,其指定的范圍是連續(xù)的