數(shù)據(jù)庫中關系模式的等級與檢索_第1頁
數(shù)據(jù)庫中關系模式的等級與檢索_第2頁
數(shù)據(jù)庫中關系模式的等級與檢索_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數(shù)據(jù)庫中關系模式的等級與檢索

1幾種范式的解決技術搜索效率與模式模型的類型密切相關。在數(shù)據(jù)庫設計階段,糟糕的數(shù)據(jù)庫模型通常容易導致以下問題:數(shù)據(jù)量過大、插入異常、刪除異常并更新異常。按照關系模式滿足實際需求程度的不同,可將關系模式分為不同等級,即:1NF、2NF、3NF、BCNF、4NF、5NF,這幾個范式可以在不同程度解決上述問題。一個較低范式的關系模式,可以通過模式分解轉換為若干個高一級范式的關系模式的集合,此過程即是關系模式的規(guī)范化過程。規(guī)范化理論的基本思想是逐步消除不合適的數(shù)據(jù)依賴,讓其中關系的概念更確定和單一。具體來說,從1NF到5NF是一個逐漸消除非主屬性對碼的部分函數(shù)依賴和傳遞函數(shù)依賴、消除主屬性對碼的部分函數(shù)依賴和傳遞函數(shù)依賴、消除非平凡且非函數(shù)依賴的多值依賴、消除連接依賴的過程。需要注意的是,規(guī)范化理論雖然為數(shù)據(jù)庫設計提供了理論指導,但并不是規(guī)范化程度越高,模式就越好。例如:規(guī)范化程度越高,雖然對降低數(shù)據(jù)冗余和消除數(shù)據(jù)異常有好處,但由于關系被分解得更細,當查詢要用到兩個以上關系模式的屬性時,就會因為連接運算而付出較高的代價,反而會降低查詢的效率。所以在設計過程中,必須結合實際需要和應用環(huán)境,為關系模式選用合理的范式等級。2創(chuàng)建索引的原則索引是一種數(shù)據(jù)結構,通過對數(shù)據(jù)表中一列或多列的值排序,從而提升數(shù)據(jù)查詢效率。但當對數(shù)據(jù)表進行增加、刪除和修改數(shù)據(jù)的時候,索引也需要發(fā)生相應變化即還需要動態(tài)維護索引,因此使用索引會降低數(shù)據(jù)的更新速度。在數(shù)據(jù)庫的設計過程中,既要注意利用索引來提升查詢效率,同時也要考慮索引的維護代價,因此,應該遵從創(chuàng)建索引的一些原則。(1)索引要建立在經常需要查詢的列上因為經常需要查詢的列對索引利用率高。(2)在經常需要根據(jù)范圍進行查詢的列上要創(chuàng)建索引,因為索引已經排序,則根據(jù)范圍進行查詢時效率更高。(3)對查詢中經常需要進行GROUPBY、ORDERBY的列上建立索引,這樣可以加快查詢的分組和排序的時間。(4)不應在數(shù)據(jù)值很少的列上創(chuàng)建索引。因為此種情況索引并不能顯著提高查詢速度。(5)不應在經常需要存取的列上創(chuàng)建索引,因為在經常存取的列上建立索引會付出較大的維護代價。3使用通配符匹配查詢方式從大多數(shù)數(shù)據(jù)庫來看,查詢語句往往消耗了大部分的數(shù)據(jù)庫資源,如果對查詢語句進行優(yōu)化,則可以大大提升數(shù)據(jù)庫的性能。此外,查詢語句獨立于程序設計邏輯,相對于程序源代碼的優(yōu)化,對查詢語句優(yōu)化的風險和時間成本會更低,所以,對查詢語句進行優(yōu)化具有重要的意義。以下是對查詢語句進行優(yōu)化的幾條原則。(1)將最具有限制性的條件放在前面,大值在前,小值在后。如“WHEREa<=10000ANDa>=1”效率高,而“WHEREa>=1ANDa<=10000”效率低。原因就在于雖然這兩個表達式表達的是同一個意思,但因為“a<=10000”比“a>=1”具有更強的限制性,所以具有更高的效率。(2)避免采用通配符匹配查詢。通配符匹配查詢特別耗費時間。即使在條件字段上建立了索引,在使用通配符匹配查詢的情況下也還是采用順序掃描的方式。解決辦法是可以考慮將通配符表達式轉化成等價的不等式,則在執(zhí)行查詢時就會利用索引來查詢,這樣就會大大的提高查詢速度。(3)避免相關子查詢。一個列如果同時在主查詢和WHERE子句中的查詢中出現(xiàn),那么很可能當主查詢中的字段值改變之后,子查詢必須重新查詢一次。查詢嵌套層次越多,效率越低,因此應當盡量避免子查詢。解決辦法是可以考慮將子查詢改為用“AND”來表達的等價表達式,這樣就可以有效避免相關子查詢,提高查詢效率。例如:將語句“SELECTs1,s2FROMTaWHEREs3IN(SELECTs3FROMTbWHERETb.num=100)”改為“:SELECTs1,s2FROMTa,TbWHERETa.s3=Tb.s3ANDTb.num=100”。(4)消除對大型表行數(shù)據(jù)的順序存取。在嵌套查詢中,采用順序存取策略將可能嚴重影響查詢效率。比如采用順序存取策略,一個嵌套3層的查詢,如果每層都查詢1000行,那么這個查詢就要查詢10億行數(shù)據(jù)。解決辦法是對連接的字段進行索引,此外還可以使用并集來避免順序存取。(5)使用臨時表加速查詢。合理使用臨時表可以有效提升查詢效率。以下兩種情況可使用臨時表提高查詢效率。(1)當某一個SQL語句關聯(lián)的表在兩張及以上,并且和一些小表關聯(lián)??梢圆捎脤⒋蟊磉M行分拆并且得到比較小的結果集合存放在臨時表中。(2)當程序執(zhí)行過程中可能需要存放一些臨時的數(shù)據(jù),這些數(shù)據(jù)在整個程序的會話過程中會用到。在使用臨時表的過程中需要注意的是:臨時表創(chuàng)建后不會反映主表的修改。在主表中數(shù)據(jù)頻繁修改的情況下,注意不要丟失數(shù)據(jù)。(6)字段的提取應采取“按需提取”的原則。本原則要求查詢語句應避免“SELECT*”,而應根據(jù)實際需要提取字段。如果在結果中只需要顯示字段“s1,s2,s6”,則應寫成“SELECTs1,s2,s6”,這樣可以省去不

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論