ORACLE SQL效能優化之二

2021-06-16 20:13:24 字數 507 閱讀 6169

oracle在多表查詢時,選擇合適的基礎表進行查詢,sql效率會比較高!

所謂基礎表,是指在排在from後面的表列當中,最後乙個位置的表稱為基礎表。

oracle解析器在處理from子句時,會從from後面的最後乙個表開始向前依次連線查詢

如selec t a.name ,b.code,c.content froma a,b b,c c where 。。。時,會先查詢c表,再與b表連線,最後與a表連線查詢。

所以要選擇適當的表作為基礎表,放到from最後乙個位置。

在此處我們假設各表的記錄數大小順序為a

則優化語句不應該像以上sql那樣子寫

最優寫法:

selec t a.name ,b.code,c.content from  c c,b b,a a where 。。。

最後要說明一點:對於交叉表查詢,所謂交叉關聯表作為基礎表進行查詢最優。所謂交叉表,舉學生選課為例來說,學生表,課程表,選課情況表,這三張表當中,選課情況表為交叉表,應作為基礎表進行查詢!!

ORACLE SQL效能優化(二)

4.選擇最有效率的表名順序 只在基於規則的優化器中有效 oracle的解析器按照從右到左的順序處理from子句中的表名,因此 from子句中寫在最後的表 基礎表 driving table 將被最先處理.在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表.當oracle處理多個...

ORACLE SQL效能優化系列 二

4.選擇最有效率的表名順序 只在基於規則的優化器中有效 oracle的解析器按照從右到左的順序處理from子句中的表名,因此from子句中寫在最後的表 基礎表 driving table 將被最先處理.在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表.當oracle處理多個表...

ORACLE SQL效能優化系列 二

4.選擇最有效率的表名順序 只在基於規則的優化器中有效 oracle的解析器按照從右到左的順序處理from子句中的表名,因此from子句中寫在最後的表 基礎表 driving table 將被最先處理.在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表.當oracle處理多個表...