當前位置:首頁 » 編程語言 » sql執行順序oracle

sql執行順序oracle

發布時間: 2022-11-23 05:30:21

❶ Oracle SQL條件順序對性能的影響有哪些

在實際操作中有人會問到關於Oracle資料庫中的Where子句的條件書寫順序的正確與否是否會對SQL性能有影響,我的直覺是沒有影響。 因為如果這個順序有影響,Oracle應該早就能夠做到自動優化,但一直沒有關於這方面的確鑿證據。在網上查到的文章,一般認為在RBO優化器模式下無影響(10G開始,預設為RBO優化器模式),而在CBO優化器模式下有影響,主要有兩種觀點: a.能使結果最少的條件放在最右邊,SQL執行是按從右到左進行結果集的篩選的; b.有人試驗表明,能使結果最少的條件放在最左邊,SQL性能更高。 查過oracle8到11G的在線文檔,關於SQL優化相關章節,沒有任何文檔說過where子句中的條件對SQL性能有影響,到底哪種觀點是對的,沒有一種確切的結論,只好自己來做實驗證明。結果表明,我們大家都知道Oracle SQL條件的相關執行是從右到左的,但條件的順序對SQL性能沒有影響。 實驗一:證明了SQL的語法分析是從右到左的 下面的試驗在9i和10G都可以得到相同的結果: 第1條語句執行不會出錯,第2條語句會提示除數不能為零。 Select'ok'FromDualWhere1/0=1And1=2;Select'ok'FromDualWhere1=2And1/0=1;證明了SQL的語法分析是從右到左的。 實驗二:證明了SQL條件的執行是從右到左的 droptabletemp; createtabletemp(t1varchar2(10),t2varchar2(10)); insertintotempvalues('zm','abcde'); insertintotempvalues('sz','1'); insertintotempvalues('sz','2');commit;select*fromtempwhereto_number(t2)1andt1='sz';select*fromtempwheret1='sz'andto_number(t2)1;在9i上執行, 第1條語句執行不會出錯,第2條語句會提示無效的數字 在10G上執行,兩條語句都不會出錯。 說明:9i上源碼天空 實驗三:證明了在10g上SQL條件的執行是從右到左的 CreateOrReplaceFunctionF1(v_InVarchar2)ReturnVarchar2IsBeginDbms_Output.Put_Line('execF1'); Returnv_In;EndF1;/CreateOrReplaceFunctionF2(v_InVarchar2)ReturnVarchar2IsBeginDbms_Output.Put_Line('execF2'); Returnv_In;EndF2;/SQL setserverouton;SQL

熱點內容
名爵6競技版有哪些配置 發布:2022-11-27 08:17:22 瀏覽:150
id改密碼需要驗證多少次 發布:2022-11-27 08:17:01 瀏覽:623
超級訪問吳秀波 發布:2022-11-27 08:16:01 瀏覽:620
微信改支付密碼在哪裡弄 發布:2022-11-27 08:15:59 瀏覽:419
資料庫連線題 發布:2022-11-27 08:15:08 瀏覽:539
死神覺醒商店刷新腳本 發布:2022-11-27 08:14:12 瀏覽:410
歐尚x5手動擋少了什麼配置 發布:2022-11-27 08:12:02 瀏覽:399
傳奇新伺服器怎麼玩 發布:2022-11-27 08:11:58 瀏覽:73
添加游戲存儲空間管理器 發布:2022-11-27 08:11:10 瀏覽:147
反碼得源碼 發布:2022-11-27 08:08:40 瀏覽:823