逻辑查询优化
為什么80%的碼農都做不了架構師?>>> ??
1、邏輯查詢優化
? ? ?基于關系代數理論,啟發式規則,對查詢進行等價重寫。
2、查詢重寫規則
(1)子查詢優化
(2)視圖重寫
(3)等價謂詞重寫
(4)條件化簡
(5)外連接消除
(6)嵌套連接消除
(7)連接消除
(8)語義優化
(9)針對非SPJ的優化
3、查詢的基本操作
(1)選擇
即限制條件,優化方式是選擇操作下推,目的是盡量減少操作前的元組數,使得中間臨時關系盡量少,減少IO、CPU的消耗,節約內存空間。
比如a = b, b =1 ,下推到 a=1 and b=1,分別下推到A,B表
(2)投影操作
對應的select目的列對象,優化方式是投影操作下推。
目的是盡量減少連接操作前的列數,使得中間臨時關系盡量少,節約內存空間
(3)連接操作
至少兩個表存在。
A、多表連接中每個表被連接的順序決定著效率
比如ABC,ACB,BCA等
B、多表連接中每個表被連接的順序被用戶語義決定
笛卡爾積、內連接、左外連接、右外連接、全外連接
4、查詢的類型
(1)針對SPJ的查詢優化
基于選擇(Select)、投影(Projection)、連接(Join)三種基本組合操作結合的查詢所做的優化
選擇、投影可以在關系代數規則的指導下進行優化
表連接,需要多表連接的相關算法完成優化。
(2)針對非SPJ的查詢優化
在SPJ的基礎上存在GROUP BY操作的查詢,這是一種較為復雜的查詢,對帶有GROUP BY、ORDER BY等操作的優化
基于索引及代價估算完成。
5、物理查詢優化
代價模型+索引利用+單表掃描算法+兩表連接算法+多表連接算法 = 物理查詢優化
轉載于:https://my.oschina.net/scipio/blog/292767
總結
- 上一篇: 【Kali 树莓派版学习笔记】安装系统和
- 下一篇: [Matlab] 二进制蝙蝠算法用于解决