第四章 查詢處理(查詢優化)
學習目標
查詢優化的目的
查詢優化的步驟
一、概述
關系數據庫系統的查詢優化
- 查詢優化在關系數據庫系統中有着非常重要的地位。
- 關系查詢優化是影響RDBMS性能的關鍵因素。
- 由於關系表達式的語義級別很高,RDBMS可以從關系表達式中分析查詢語義,為執行查詢優化提供了可能。
查詢優化的優點不僅在於用戶不必考慮如何最好地表達查詢以獲得較好的效率,而且在於系統可以比用戶程序的“優化”做得更好 :
1)查詢優化器可以從數據字典中獲取許多統計信息,而用戶程序則難以獲得這些信息;
2)如果數據庫的物理統計信息改變了,系統可以自動對查詢重新優化以選擇相適應的執行計划。在非關系數據庫系統中必須重寫程序,而重寫程序在實際應用中往往是不太可能的;
3)查詢優化器可以考慮數百種不同的執行計划,程序員一般只能考慮有限的幾種可能性;
4)查詢優化器中包括了很多復雜的優化技術,這些優化技術往往只有最好的程序員才能掌握。
系統的自動優化相當於使得所有人都擁有這些優化技術。
RDBMS通過某種代價模型計算出各種查詢執行策略的執行代價,然后選取代價最小的執行方案。
集中式數據庫
執行開銷主要包括:
磁盤存取塊數(I/O代價)
處理機時間(CPU代價)
查詢的內存開銷
I/O代價是最主要的
分布式數據庫
總代價=I/O代價+CPU代價+內存代價+通信代價
查詢優化的總目標:
- 選擇有效的策略
- 求出給定關系表達式的值
- 使得查詢代價最小(實際上是較小)
查詢優化步驟
- 將查詢轉換成某種內部表示,通常是語法樹;
- 根據一定的等價變換規則把語法樹轉換成標准(優化)形式;
- 選擇低層的操作算法:
對於語法樹中的每一個操作:
計算各種執行算法的執行代價
選擇代價小的執行算法 - 生成查詢計划(查詢執行方案):
查詢計划是由一系列內部操作組成的。
[例1] 查詢選修了2號課程的學生姓名,用SQL表達:
SELECT Student.Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno AND SC.Cno=‘2’;
假定學生-課程SC中有1000個學生記錄,10000個選課記錄
其中選修2號課程的選課記錄為50個






查詢優化任務及過程
1)查詢優化的基本過程?
討論1.查詢優化涉及哪些方面,大致過程?

優化的查詢樹&執行計划
3) DBMS生成最終執行計划的內涵?

二、關系表達式的轉換
1.用於表達式轉換的等價規則
1)什么是等價規則,常用的有哪些?
討論2.關系表達式進行等價轉換的依據是什么?


等價規則(1)
等價規則有哪些,規則的用途?





2.等價規則的圖示化

三 查詢樹的基本優化策略
1.“選擇下移”優化策略
1)“選擇下移”有何優化效果?
討論3.如何利用等價規則進行關系表達式的轉換?

“選擇下移”查詢樹優化過程

2.“投影下移”優化策略

“投影下移”查詢樹優化過程

3.“選擇連接順序”優化策略

“選擇連接順序”查詢樹優化過程

例子
查詢:“張三”老師所在學院的預算和地址。

4.執行計划
4)什么是“執行計划”,如何形成?

總結
基本知識:
查詢優化的步驟
關系代數優化的方法
擴展學習:
查詢優化器如何進行設計?