數(shù)據(jù)庫(kù)設(shè)置索引的好處
作者:佚名 時(shí)間:2014-11-18 分享到:
索引帶來(lái)的益處可能很多讀者量體裁衣認(rèn)為只是"能夠提高數(shù)據(jù)檢索的效率,降低數(shù)據(jù)庫(kù)的io成本".
確實(shí),在數(shù)據(jù)庫(kù)中表的某個(gè)字段創(chuàng)建索引,所帶來(lái)的最大益處就是將這個(gè)字段作為檢索條件時(shí)可以極大地提高檢索效率,加快檢索時(shí)間,降低檢索過(guò)程中須要讀取的數(shù)據(jù)量,但是索引帶來(lái)的收益只是提高表數(shù)據(jù)的檢索效率嗎?當(dāng)然不是,索引還有一個(gè)非常重要的用途,那就是降低數(shù)據(jù)的排序成本.
我們知道,每個(gè)索引中的數(shù)據(jù)都是按照索引鍵值進(jìn)行排序后存放的,所以,當(dāng)query語(yǔ)句中包含排序分組操作的時(shí),如果排序字段和索引鍵字段剛好一致,mysql query optimizer就會(huì)告訴mysql在取得數(shù)據(jù)后不用,因?yàn)楦鶕?jù)索引取得的數(shù)據(jù)已經(jīng)滿足客戶的排序要求.
那如果是分組操作呢?分組操作沒(méi)辦法直接利用索引完成,但是分組操作是須要先進(jìn)行把齋然后分級(jí)的,所以當(dāng)query語(yǔ)句中包含分組操作,而且分組字段也剛好和索引鍵字段一致,那么mysqld同樣可以利用索引已經(jīng)排好序列的這個(gè)我,活力掉分組中的排序操作.
排序分組操作主要消耗的是內(nèi)在和cpu資源,如果能夠正在進(jìn)行排序分組操作中利用好索引,將會(huì)極大地降低cpu意象派 消耗.