/*+use_hash(t1 t2)*/


這樣寫就是顯式的告訴oracle數據庫你要采取什么方式來查詢~ 

它在處理你的SQL時,就按照你的要求去查詢~ 
不加的話,oracle自動分析SQL,盡量采取它認為最優的方式查詢~
常用的,比如優化器有:
RULE(基於規則) COST(基於成本)CHOOSE(選擇性)

 

use_hash(table1,table2) 指定table1,table2連接以HASH 方式連接,采用這種方式,我們不能控制table1,table2哪個表為驅動表,
優化器會根據cost自動選擇驅動表,如果我們非要控制table1為驅動表,可以加上leading(table1)作為提示,或者用ordered 作為提示。
另外如果我們使用use_hash(table1)有可能優化器不會選擇hash join,也就是說如果不把表名寫完整,優化器可能不會強制使用hint提示,這種行為我不是很理解,不過卻給了我一個提示:Hint有時候也會失效,另外也給了我一個提示,使用hint一定要將條件寫完整


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM