程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 簡單介紹Oracle驅動表

簡單介紹Oracle驅動表

編輯:Oracle數據庫基礎

Oracle有很多值得學習的地方,這裡我們主要介紹Oracle驅動表,包括介紹hints的用法等方面。CBO根據統計信息選擇Oracle驅動表,假如沒有統計信息,則在from 子句中從左到右的順序選擇Oracle驅動表。這與RBO選擇的順序正好相反。這是英文原文(CBO determines join order from costs derived from gathered statistics. If there are no stats then CBO chooses the driving order of tables from LEFT to RIGHT in the FROM clause. This is OPPOSITE to the RBO) 。

我還是沒法證實這句話的正確性。不過經過驗證:“如果用ordered 提示(此時肯定用CBO),則以from 子句中按從左到右的順序選擇Oracle驅動表”這句話是正確的。實際上在CBO中,如果有統計數據(即對表與索引進行了分析),則優化器會自動根據cost值決定采用哪種連接類型,並選擇合適的Oracle驅動表,這與where子句中各個限制條件的位置沒有任何關系。如果我們要改變優化器選擇的連接類型或Oracle驅動表,則就需要使用 hints了,具體hints的用法在後面會給予介紹。

如果我創建的3個表:

  1. create table A(col1 number(4,0),col2 number(4,0), col4 char(30));  
  2. create table B(col1 number(4,0),col3 number(4,0), name_b char(30));  
  3. create table C(col2 number(4,0),col3 number(4,0), name_c char(30));  
  4. create index inx_col12A on a(col1,col2); 

執行查詢:

  1. select A.col4  
  2. from B, A, C  
  3. where B.col3 = 10 
  4. and A.col1 = B.col1  
  5. and A.col2 = C.col2  
  6. and C.col3 = 5;  
  7. Execution Plan 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved