這個陳述句要2秒多
select t1.isncode ,
t2.pinbancode ,
t1.outercode
from tblisnstatus t1 left join tblmoserialno t2
on t1.isncode=t2.moserialno where t1.isncode='021JHRHVH4000623'
同樣一個陳述句,只是把查詢的一個欄位去掉,就只要0.0幾秒。怎么優化上面的陳述句??
select t1.isncode ,
--t2.pinbancode ,
t1.outercode
from tblisnstatus t1 left join tblmoserialno t2
on t1.isncode=t2.moserialno where t1.isncode='021JHRHVH4000623'
uj5u.com熱心網友回復:
看看執行計劃呢,有啥區別,試試select /*+RULE*/t1.isncode ,
t2.pinbancode ,
t1.outercode
from tblisnstatus t1 left join tblmoserialno t2
on t1.isncode=t2.moserialno where t1.isncode='021JHRHVH4000623'
uj5u.com熱心網友回復:
好像沒效果。 執行計劃顯示: 耗時長的那個 變成了全表掃描。但是這幾個欄位我是有建索引的,uj5u.com熱心網友回復:
第一句是從兩個表中取資料,第二句注釋了表2的欄位,相當于從一個表中取資料,執行效率變快是必然的。樓主要想從兩張表中取資料的話,這樣寫是沒有問題的,我覺得在sql陳述句上面沒有優化的余地了。
uj5u.com熱心網友回復:
樓主也可以試試把資料量小的表放在left join后面作為基礎表,這樣執行效率也會好一點。uj5u.com熱心網友回復:
不好意思,上一句回復是錯誤的,樓主忽略就好。
uj5u.com熱心網友回復:
我很納悶兒,你既然left join 了,后面還用where 進行過濾,那直接inner join 不就完了。uj5u.com熱心網友回復:
抱歉我看錯了,我看成后表過濾了
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/71753.html
標籤:非技術區
上一篇:請教oracle rac集群問題
