数据库系统实现 第六章 查询执行
第六章 查詢執行
查詢執行也就是操作數據庫的算法
一次查詢的過程:
查詢-->查詢編譯(第七章)-->查詢執行(第六章)-->數據
查詢編譯預覽
查詢編譯可以分為三個步驟:
a)分析:構造分析樹,用來表達查詢和它的結構
b)查詢重寫,分析樹被轉化為初始查詢計劃,通常是代數表達式,之后初始的查詢計劃會被優化為一個時間更小的計劃
c)物理計劃生成,將查詢計劃轉化成物理的計劃,
為了選擇更好的查詢計劃,需要判斷
1)查詢哪一個代數的等價形式是最有效的
2)對選中形式的每一個操作,所使用的算法選擇
3)數據如何從一個操作轉向另一個操作,比如流水線的方式還是,主存緩沖區還是通過磁盤。這些選擇依賴于關系的大小,統計數據,某些索引的存在以及數據在磁盤上的分步。
關系代數的操作符包括
1)并,交,和差
2)選擇
3)投影
4)乘積
5)連接
6)消除重復
7)分組
8)排序
表達式樹
對于任何操作,我們可以將幾個操作符的應用畫成一個表達式樹,這些樹的葉節點是關系的名字,內部節點為操作符,每個操作符操作的是他的兒子節點。
物理查詢計劃操作符
物理查詢計劃由操作符構造,每一個操作符實現計劃的一步,物理操作符常是一個關系代數操作符的時間。當然物理操作符有時完成的與關系代數無關,例如,掃描一個表。
掃描表
無力查詢計劃中最基本的事是讀一個關系R的整個內容,例如將R與另一個關系做并連接的時候,這一步是必須的,掃描的方式有兩種
1)很多時候,關系R存放在二級存儲器中的某些區域,元組排放在塊中,一個接一個的掃描塊,叫做表-掃描
2)如果關系R種某一屬性有索引,可以使用索引來得到R的元組,這種叫索引-掃描
掃描表時的排序
實現排序-掃描的方法有三種
a)如果我們想要按照屬性a來排序關系R,并且a上有一個B數索引,或者R是按a排序的,那么對索引掃描即可得到順序的R
b)如果R可以裝進內存,那么可以采用內存排序算法
c)如果R很大不能完全裝進內存,那么可以采用外存排序的方式,如兩階段多路歸并
轉載于:https://www.cnblogs.com/icodefive/p/7425554.html
總結
以上是生活随笔為你收集整理的数据库系统实现 第六章 查询执行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cmd 常用操作
- 下一篇: 框架开发中的junit单元测试