數據庫查詢優化策略

數據庫查詢優化

邏輯層查詢優化策略

1.儘可能的早做選擇和投影(基本思路):可以使中間結果變小,節省幾個數量級的執行時間
2.把選擇和投影串接起來:一元運算序列可一起執行,只需對整個關係進行一趟掃描
3.把投影與其前或後的二元運算結合:在第一次用關係時去掉一些無關屬性,可以避免多次掃描整個關係
4.把某些選擇與其前的笛卡爾積合併成一個連接:當RxS前有選擇運算且其中條件是R,S屬性間比較運算的時。可以將其轉換爲連接運算節省時間
5.執行連接運算前對關係做適當的預處理:排序,索引
6.找出表達式裏的公共子表達式:若公共的子表達式結果不大,則預先計算,以後直接讀入結果,尤當視圖情況下使用

  • 關係代數的基本操作

並(Union)交(Intersect)差(Except) 選擇 投影

待優化查詢示例背景

圖書館關係數據庫

books(title,author,pname,lc_no);
publishers(pname,padder,pciy)
borrowers(name,addr,city,card_no)
loans(card_no,lc_no,date)

pname爲出版社名,lc_no圖書館編目號
padder爲出版社地址,pcity爲出版社所在地
name爲讀者名,addr爲讀者所在地址,city爲讀者所在城市,card_no爲圖書證號,date爲借出日期
創建視圖
CREATE VIEW xloans(
 select title,author,pname,lc_no,name,addr,city,card_no,date
 from  books bs,borrowers b,loans l
 where bs.lc_no=l.lc_no and b.card_no=l.card_no

);
關係代數
xloans=⊓s (σ F (loans x booksb x orrowers))
s=title,author,pname,lc_no,name,addr,city,card_no,date
F=(bs.lc_no=l.lc_no)∧ b.card_no=l.card_no

基本關係代數的等價變換公式

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

select title from xloans where date<=1/1/79; 

⊓ title (σ date<=’1/1/79’ (xloans))

這裏寫圖片描述

物理查詢優化策略

DBMS衡量物理查詢計劃的優劣,I/O 訪問次數,cpu佔用時間,網絡通信量等。

  • oracle收集統計信息放入表中
anlalyze {index|table|cluster} {indexname|tablename|clustername}
compute statistics {for table|for all[indexed] |columns[size n]}
  • 進行代價估算
發佈了57 篇原創文章 · 獲贊 29 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章