以下的文章主要是對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都可以。
注:連接字段都建有獨立索引。
語句如下:
- SELECT A.*
- FROM A ,B,C
- WHERE A.COL_A = B.COL_B1 AND B.COL_B2 = C.COL_C
- SELECT A.*
- FROM A JOIN (B JOIN C ON (B.COL_B2 = C.COL_C)) ON (A.COL_A = B.COL_B1)
- SELECT A.*
- FROM (A JOIN B ON A.COL_A = B.COL_B1) JOIN C ON B.COL_B2 = C.COL_C
上述的相關內容就是對Oracle表查詢優化問題的描述,希望會給你帶來一些幫助在此方面。