監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 簽約案例 | 購買價(jià)格 | 在線試用 | 手機(jī)APP | 產(chǎn)品資料
X 關(guān)閉

SQL Server索引管理六大鐵律

申請免費(fèi)試用、咨詢電話:400-8352-114

文章來源:泛普軟件

索引管理六大鐵律(上)

索引是以表列為基礎(chǔ)的數(shù)據(jù)庫對象。索引中保存著表中排序的索引列,并且紀(jì)錄了索引列在數(shù)據(jù)庫表中的物理存儲位置,實(shí)現(xiàn)了表中數(shù)據(jù)的邏輯排序。通過索引,可以加快數(shù)據(jù)的查詢速度和減少系統(tǒng)的響應(yīng)時(shí)間;可以使表和表之間的連接速度加快。

但是,不是在任何時(shí)候使用索引都能夠達(dá)到這種效果。若在不恰當(dāng)?shù)膱龊舷?,使用索引反而會事與愿違。所以,在SQL Server數(shù)據(jù)庫中使用索引的話,還是需要遵守一定的規(guī)則。筆者覺得,主要是需要遵守六大鐵律。

鐵律一:天下沒有免費(fèi)的午餐,使用索引是需要付出代價(jià)的。

索引的優(yōu)點(diǎn)有目共睹,但是,卻很少有人關(guān)心過采用索引所需要付出的成本。若數(shù)據(jù)庫管理員能夠?qū)λ饕枰冻龅拇鷥r(jià)有一個充分的認(rèn)識,也就不會那么隨意到處建立索引了。

仔細(xì)數(shù)數(shù),其實(shí)建立索引的代價(jià)還是蠻大的。如創(chuàng)建索引和維護(hù)索引都需要花費(fèi)時(shí)間與精力。特別是在數(shù)據(jù)庫設(shè)計(jì)的時(shí)候,數(shù)據(jù)庫管理員為表中的哪些字段需要建立索引,要調(diào)研、要協(xié)調(diào)。如當(dāng)建有索引的表中的紀(jì)錄又增加、刪除、修改操作時(shí),數(shù)據(jù)庫要對索引進(jìn)行重新調(diào)整。雖然這個工作數(shù)據(jù)庫自動會完成,但是,需要消耗服務(wù)器的資源。當(dāng)表中的數(shù)據(jù)越多,這個消耗的資源也就越多。如索引是數(shù)據(jù)庫中實(shí)際存在的對象,所以,每個索引都會占用一定的物理空間。若索引多了,不但會占用大量的物理空間,而且,也會影響到整個數(shù)據(jù)庫的運(yùn)行性能。

可見,數(shù)據(jù)庫管理員若要采用索引來提高系統(tǒng)的性能,自身仍然需要付出不少的代價(jià)。數(shù)據(jù)庫管理員現(xiàn)在要考慮的就是如何在這兩個之間取得一個均衡?;蛘哒f,找到一個回報(bào)與投入的臨界點(diǎn)。

鐵律二:對于查詢中很少涉及的列或者重復(fù)值比較多的列,不要建立索引。

在查詢的時(shí)候,如果我們不按某個字段去查詢,則在這個字段上建立索引也是浪費(fèi)。如現(xiàn)在有一張員工信息表,我們可能按員工編號、員工姓名、或者出身地去查詢員工信息。但是,我們往往不會按照身份證號碼去查詢。雖然這個身份證號碼是唯一的。此時(shí),即使在這個字段上建立索引,也不能夠提高查詢的速度。相反,增加了系統(tǒng)維護(hù)時(shí)間和占用了系統(tǒng)空間。這簡直就是搬起石頭砸自己的腳呀。

另外,如上面的員工信息表,有些字段重復(fù)值比較多。如性別字段主要就是“男”、“女”;職位字段中也是有限的幾個內(nèi)容。此時(shí),在這些字段上添加索引也不會顯著的增加查詢速度,減少用戶響應(yīng)時(shí)間。相反,因?yàn)樾枰加每臻g,反而會降低數(shù)據(jù)庫的整體性能。

數(shù)據(jù)庫索引管理中的第二條鐵律就是,對于查詢中很少涉及的列或者重復(fù)值比較多的列,不要建立索引。

鐵律三:對于按范圍查詢的列,最好建立索引。

在信息化管理系統(tǒng)中,很多時(shí)候需要按范圍來查詢某些交易記錄。如在erp系統(tǒng)中,經(jīng)常需要查詢當(dāng)月的銷售訂單與銷售出貨情況,這就需要按日期范圍來查詢交易記錄。如有時(shí)候發(fā)現(xiàn)庫存不對時(shí),也需要某段時(shí)期的庫存進(jìn)出情況,如5月1日到12月3日的庫存交易情況等等。此時(shí),也是根據(jù)日期來進(jìn)行查詢。

對于這些需要在指定范圍內(nèi)快速或者頻繁查詢的數(shù)據(jù)列,需要為其建立索引。因?yàn)樗饕呀?jīng)排序,其保存的時(shí)候指定的范圍是連續(xù)的,查詢可以利用索引的排序,加快查詢時(shí)間,減少用戶等待時(shí)間。

不過,若雖然可能需要按范圍來進(jìn)行查詢,但是,若這個范圍查詢條件利用的不多的情況下,最好不好采用索引。如在員工信息表中,可能需要查詢2008年3月份以前入職的員工明細(xì),要為他們增加福利。但是,由于表中記錄不多,而且,也很少進(jìn)行類似的查詢。若維這個字段建立索引,雖然無傷大雅,但是很明顯,索引所獲得的收益要低于其成本支出。對數(shù)據(jù)庫管理員來說,是得不償失的。

再者,若采用范圍查詢的話,最好能利用TOP關(guān)鍵字來限制一次查詢的結(jié)果。如第一次按順序只顯示前面的500條記錄等等。把TOP關(guān)鍵字跟范圍一起使用,可以大大的提高查詢的效率。

發(fā)布:2007-04-21 14:05    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
長春OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢

泛普長春OA行業(yè)資訊其他應(yīng)用

長春OA軟件 長春OA新聞動態(tài) 長春OA信息化 長春OA快博 長春OA行業(yè)資訊 長春軟件開發(fā)公司 長春門禁系統(tǒng) 長春物業(yè)管理軟件 長春倉庫管理軟件 長春餐飲管理軟件 長春網(wǎng)站建設(shè)公司