1. 程式人生 > >高階SQL優化(一) ——《12年資深DBA教你Oracle開發與優化——效能優化部分》

高階SQL優化(一) ——《12年資深DBA教你Oracle開發與優化——效能優化部分》

  使用基於規則的優化器(CBO)時,Oracle解析器按照從右到左的順序處理FROM子句的表明,即FROM子句中最後的表(驅動表)會最先被處理。   當FROM子句包含多個表時,建議將記錄最少的表(一般是字典表)放在最後面。當Oracle處理多個表時,一般採用排序或合併的方式連線這些表,系統首先會掃描FROM子句部分的最後一個表,並對該表的資料行進行排序;然後掃描倒數第二個表,並將從該表中取出的記錄與第一個表中的記錄進行匹配合並,依此類推。 如果是大於兩表相關聯,最好選擇交叉表為驅動表,交叉表是指被其它表所引用的表。         RBO模式下,小表為驅動表的執行時間為大表是驅動的執行時間的: 0.078/2.253 = 2.26%! 驅動表的選擇     此時的優化器模式為CBO,二者的執行時間僅僅相差: 0.328-0.313=0.015毫秒,二者幾乎接近,這是為什麼呢?我們再看二者執行計劃: