程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 對Oracle表查詢優化問題的研究

對Oracle表查詢優化問題的研究

編輯:Oracle數據庫基礎

以下的文章主要是對Oracle表查詢優化問題的研究,本文以三個相關的表,即表A,表B ,表C,來作演示,你可以通過以下的文章對其的實際應用與功能有所了解,以下是文章的具體介紹,望你浏覽完以下的內容會有所收獲。

有表A,2000多行

表B,15w行

表C,18W行

數據庫為Oracle9I。

現以表A連接表B,表B連接表C做查詢,但經過分析,Oracle始終計劃是表A與C產生MERGE JOIN,要知道A表和C表是沒有關聯的,只能產生笛卡爾集。這樣就會產生2000×180000條記錄,導致查詢性能大大降低,臨時表巨大。

請問有什麼好辦法,使表A先連接表B之後再去連接表C,或者B先連接C之後再連接A都可以。

注:連接字段都建有獨立索引。

語句如下:

  1. SELECT A.*  
  2. FROM A ,B,C  
  3. WHERE A.COL_A = B.COL_B1 AND B.COL_B2 = C.COL_C  
  4. SELECT A.*  
  5. FROM A JOIN (B JOIN C ON (B.COL_B2 = C.COL_C)) ON (A.COL_A = B.COL_B1)  
  6. SELECT A.*  
  7. FROM (A JOIN B ON A.COL_A = B.COL_B1) JOIN C ON B.COL_B2 = C.COL_C  

上述的相關內容就是對Oracle表查詢優化問題的描述,希望會給你帶來一些幫助在此方面。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved