對Oracle表查詢優(yōu)化問題的研究
以下的文章主要是對Oracle表查詢優(yōu)化問題的研究,本文以三個相關(guān)的表,即表A,表B ,表C,來作演示,你可以通過以下的文章對其的實際應(yīng)用與功能有所了解,以下是文章的具體介紹,望你瀏覽完以下的內(nèi)容會有所收獲。
有表A,2000多行
表B,15w行
表C,18W行
數(shù)據(jù)庫為Oracle9I。
現(xiàn)以表A連接表B,表B連接表C做查詢,但經(jīng)過分析,Oracle始終計劃是表A與C產(chǎn)生MERGE JOIN,要知道A表和C表是沒有關(guān)聯(lián)的,只能產(chǎn)生笛卡爾集。這樣就會產(chǎn)生2000×180000條記錄,導(dǎo)致查詢性能大大降低,臨時表巨大。
請問有什么好辦法,使表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
上述的相關(guān)內(nèi)容就是對Oracle表查詢優(yōu)化問題的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】