語義優化:利用模型的語義及完整性規則,優化查詢(相同意義的不同sql表達)
語法優化:利用語法結構,優化操作的執行順序(邏輯層優化)
執行優化:訪問路徑和執行演算法的選擇和執行次序優化(物理層優化)
語義優化:內容等價性
如去掉無關表,去掉無關屬性
語法優化:語法等價性
改變次序,盡可能早做選擇,投影運算同時保證等價性
執行優化:物理等價性
選擇不同的演算法實現,保證結果等價
關係代數操作次序優化->代價估算->演算法選擇與裝配次序
語法樹:關係代數表示式的執行次序表達
盡可能早做選擇和投影
有選擇投影一元操作串起來
把投影和前或後的二元運算結合
把選擇和乘積合併成連線
...一棵未優化的語法樹->優化後的語法樹
連線與連線,積與積的交換律:小資料集全部載入記憶體
連線與連線,積和積的結合律:小資料集全部載入記憶體
投影串接律:兩遍掃瞄變一遍
選擇串接律:兩遍掃瞄變一遍
選擇和投影的交換律:方便盡可能早做投影選擇
選擇和積的交換律:減少乘積操作,優化關鍵
投影和積的交換律:減少每條記錄的長度,提高效率
選擇和並的交換律:減少中間結果
選擇和差的交換律:減少中間結果
投影和並的交換律:減少中間結果
輸入:關係代數語法樹
輸出:計算該表示式的程式
演算法:(s1)依據定理l4,把選擇拆開
(s2)對每個選擇,依據定理l4至l9,盡可能把它移至樹的底部。
(s3)對每個投影,依據定理l3,l7,l10和l5,盡可能把它移至樹的底部。如
果乙個投影是對某表示式所有屬性進行的,則去掉之。
(s4)依據定理l4至l5把串接的選擇和投影組合為單個選擇、單個投影,或者
一選擇後跟乙個投影。
(s5)對修改後的語法樹,將其內結點按以下方式分組:
每個二元運算結點(積、並、差、連線等)和其所有一元運算直接祖先結點放在
一組;對於其後代結點,若後代結點是一串一元運算且以樹葉為終點,則將這
些一元運算結點放在該組中;若該二元運算結點是笛卡兒積,且其後代結點不
能和它組合成等連線,則不能將後代結點歸入該組。
(s6)產生乙個程式:它以每組結點為一步,但後代組先執行
相同目標的不同演算法實現:一趟、兩趟、索引、雜湊、排序等
衡量指標:io次數,cpu代價、記憶體代價等
資料庫的統計資訊:存放在資料字典中或系統目錄中,方便dbms選擇合適物理執行
更新統計資訊:需要dba手動更新,相應的命令
統計資訊:
t r 或t(r):關係r的元組數目;
b r 或b(r) :關係r的磁碟塊數目;
i r 或i(r) :關係r的每個元組的位元組數;
f r 或f(r) : r的塊因子 , 即一塊能夠儲存的r的元組數目
v(r, a): r中屬性a出現不同值的數目,即a (r) 的數目.
sc(r, a): r中屬性a的選擇基數,滿足a上等值條件的平均記錄數
估計投影:
t:不變,行數不變
b:變小,每條記錄變短,節省了磁碟塊
選擇運算:
相等:t(r)/v(r,a),不知道v時取10
小於:t(r)/3
串接條件:分母相乘
或者:估計都不滿足的概率
連線: tr*ts*1/max(v(r,y),v(s,y))
資料庫系統查詢優化的步驟
資料庫系統查詢優化的總目標是 選擇有效的策略,求得給定關係表示式的值,實際系統對查詢優化的具體實現不盡相同,但一般來說,可以歸納為四個步驟 1.將查詢轉化為某種內部表示,通常是語法樹.2.根據一定的等價變換規則把語法樹轉換成標準形式.3.選擇低層的操作演算法.對於語法樹中的每乙個操作需要根據訪問路徑...
資料庫系統表查詢
1.利用sysobjects系統表查詢 在這個表中,在資料庫中建立的每個物件 例如約束 預設值 日誌 規則以及儲存過程 都有對應一行。select from sysobjects where xtype u 物件型別 xtype 值的含義 af aggregate function clr c ch...
資料庫系統mysql MySQL資料庫系統
1 mysql的特點 1 多執行緒 多使用者 2 基於c s 客戶端 伺服器 架構 3 簡單易用 查詢速度快 4 安全可靠 2 mysql編譯安裝 代表鍵盤上tab鍵 1 準備工作 解除安裝使用rpm方式安裝的mysql rpm e mysql nodeps 安裝cmake包 cd media ta...