<optgroup id="r9hwm"></optgroup><nav id="r9hwm"><label id="r9hwm"></label></nav>

    <tt id="r9hwm"><tr id="r9hwm"></tr></tt>
  1. 
    
  2. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

  3. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

        1. <listing id="r9hwm"></listing>
          <delect id="r9hwm"></delect>
          <optgroup id="r9hwm"><samp id="r9hwm"><ol id="r9hwm"></ol></samp></optgroup>

          解析sql語句

          如何分析SQL語句 -

          多時候,我們不太清楚自己寫的SQL語句好還是不好,往往數據量一大,程序運行變慢。

          其實在SQL/PLUS里可以很清晰的分析出SQL語句的執行計劃,它可以提醒我們來創建索引或改變SQL語句的寫法。 先在sys用戶下運行@/ORACLE_HOME/sqlplus/admin/*內容:set echo ondrop role plustrace;create role plustrace;grant select on v_$sesstat to plustrace;grant select on v_$statname to plustrace;grant select on v_$session to plustrace;grant plustrace to dba with admin option;set echo off產生plustrace角色,然后在sys用戶下把此角色賦予一般用戶&usernameSQL> grant plustrace to &username; 然后找到/ORACLE_HOME/rdbms/admin/*,然后在當前用戶SQL>下運行,它創建一個plan_table,用來存儲分析SQL語句的結果。

          create table PLAN_TABLE ( statement_id varchar2(30), timestamp date, remarks varchar2(80), operation varchar2(30), options varchar2(30), object_node varchar2(128), object_owner varchar2(30), object_name varchar2(30), object_instance numeric, object_type varchar2(30), optimizer varchar2(255), search_columns number, id numeric, parent_id numeric, position numeric, cost numeric, cardinality numeric, bytes numeric, other_tag varchar2(255), partition_start varchar2(255), partition_stop varchar2(255), partition_id numeric, other long, distribution varchar2(30)); 在SQL/PLUS的窗口運行以下命令 set time on; (說明:打開時間顯示) set autotrace on; (說明:打開自動分析統計,并顯示SQL語句的運行結果) set autotrace traceonly; (說明:打開自動分析統計,不顯示SQL語句的運行結果) 接下來你就運行測試SQL語句,看到其分析統計結果了。一般來講,我們的SQL語句應該避免對大表的全表掃描。

          關閉以上功能,在SQL/PLUS的窗口運行以下命令 set time off; (說明:關閉時間顯示) set autotrace off; (說明:關閉自動分析統計)。

          在Oracle中SQL語句的解析步驟是怎樣的呢

          在Oracle中SQL語句的解析步驟如下: 1、 語法檢測。

          判斷一條SQL語句的語法是否符合SQL的規范,比如執行:SQL> selet * from emp;我們就可以看出由于Select關鍵字少了一個“c”,這條語句就無法通過語法檢驗的步驟了。 2、 語義檢查。

          語法正確的SQL語句在解析的第二個步驟就是判斷該SQL語句所訪問的表及列是否準確?用戶是否有權限訪問或更改相應的表或列?比如如下語句: SQL> select * from emp; select * from emp * ERROR at line 1: ORA-00942: table or view does not exist 由于查詢用戶沒有可供訪問的emp對象,因此該SQL語句無法通過語義檢查。 3、 檢查共享池中是否有相同的語句存在。

          假如執行的SQL語句已經在共享池中存在同樣的副本,那么該SQL語句將會被軟解析,也就是可以重用已解析過的語句的執行計劃和優化方案,可以忽略語句解析過程中最耗費資源的步驟,這也是我們為什么一直強調避免硬解析的原因。 這個步驟又可以分為兩個步驟: (1)驗證SQL語句是否完全一致。

          在這個步驟中,Oracle將會對傳遞進來的SQL語句使用HASH函數運算得出HASH值,再與共享池中現有語句的HASH值進行比較看是否一一對應。現有數據庫中SQL語句的HASH值我們可以通過訪問v$sql、v$sqlarea、v$sqltext等數據字典中的HASH_VALUE列查詢得出。

          如果SQL語句的HASH值一致,那么ORACLE事實上還需要對SQL語句的語義進行再次檢測,以決定是否一致。那么為什么Oracle需要再次對語句文本進行檢測呢?不是SQL語句的HASH值已經對應上了?事實上就算是SQL語句的HASH值已經對應上了,并不能說明這兩條SQL語句就已經可以共享了。

          我們首先參考如下一個例子:假如用戶A有自己的一張表EMP,他要執行查詢語句:select * from emp;用戶B也有一張EMP表,同樣要查詢select * from emp;這樣他們兩條語句在文本上是一模一樣的,他們的HASH值也會一樣,但是由于涉及到查詢的相關表不一樣,他們事實上是無法共享的。 假如這時候用戶C又要查詢同樣一條語句,他查詢的表為scott下的公有同義詞,還有就是SCOTT也查詢同樣一張自己的表emp,情況會是如何呢? SQL> connect a/a Connected。

          SQL> create table emp ( x int ); Table created。 SQL> select * from emp; no rows selected SQL> connect b/b Connected。

          SQL> create table emp ( x int ); Table created。 SQL> select * from emp; no rows selected SQL> conn scott/tiger Connected。

          SQL> select * from emp; SQL> conn c/c Connected。 SQL> select * from emp; SQL> conn/as sysdba Connected。

          SQL> select address,hash_value, executions, sql_text 2 from v$sql 3 where upper(sql_text) like 'SELECT * FROM EMP%' 4 / ADDRESS HASH_VALUE EXECUTIONS SQL_TEXT -------- ---------- ---------- ------------------------ 78B89E9C 3011704998 1 select * from emp 78B89E9C 3011704998 1 select * from emp 78B89E9C 3011704998 2 select * from emp 我們可以看到這四個查詢的語句文本和HASH值都是一樣的,但是由于查詢的對象不同,只有后面兩個語句是可以共享的,不同情況的語句還是需要硬解析的。 因此在檢查共享池共同SQL語句的時候,是需要根據具體情況而定的。

          我們可以進一步查詢v$sql_shared_cursor以得知SQL為何不能共享的原因: SQL> select kglhdpar, address, 2 auth_check_mismatch, translation_mismatch 3 from v$sql_shared_cursor 4 where kglhdpar in 5 ( select address 6 from v$sql 7 where upper(sql_text) like 'SELECT * FROM EMP%' ) 8 / KGLHDPAR ADDRESS A T -------- -------- - - 78B89E9C 786C9D78 N N 78B89E9C 786AC810 Y Y 78B89E9C 786A11A4 Y Y TRANSLATION_MISMATCH表示SQL游標涉及到的數據對象是不同的;AUTH_CHECK_MISMATCH表示對同樣一條SQL語句轉換是不匹配的。 ( 2、)驗證SQL語句執行環境是否相同。

          比如同樣一條SQL語句,一個查詢會話加了/*+ first_rows */的HINT,另外一個用戶加/*+ all_rows */的HINT,他們就會產生不同的執行計劃,盡管他們是查詢同樣的數據。 我們下面就一個實例來說明SQL執行環境對解析的影響,我們通過將會話的workarea_size_policy變更來查看對同樣一條SQL語句執行的影響: SQL> alter system flush shared_pool; System altered。

          SQL> show parameter workarea_size_policy NAME TYPE VALUE ------------------------------------ ----------- -------------- workarea_size_policy string AUTO SQL> select count(*) from t; COUNT(*) ---------- 5736 SQL> alter session set workarea_size_policy=manual; Session altered。 SQL> select count(*) from t; COUNT(*) ---------- 5736 SQL> select sql_text, child_number, hash_value, address 2 from v$sql 3 where upper(sql_text) = 'SELECT COUNT(*) FROM T' 4 / SQL_TEXT CHILD_NUMBER HASH_VALUE ADDRESS ------------------------------ ------------ ---------- -------- select count(*) from t 0 2199322426 78717328 select count(*) from t 1 2199322426 78717328 可以看到。

          怎么用正則表達式解析sql語句

          先看要解析的樣例SQL語句:select * from dualSELECT * frOm dualSelect C1,c2 From tbselect c1,c2 from tbselect count(*) from t1select c1,c2,c3 from t1 where condi1=1 Select c1,c2,c3 From t1 Where condi1=1 select c1,c2,c3 from t1,t2 where condi3=3 or condi4=5 order by o1,o2Select c1,c2,c3 from t1,t2 Where condi3=3 or condi4=5 Order by o1,o2select c1,c2,c3 from t1,t2,t3 where condi1=5 and condi6=6 or condi7=7 group by g1,g2Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2,g3 order by g2,g3解析效果之一(isSingleLine=false):原SQL為select * from dual解析后的SQL為select * from dual原SQL為SELECT * frOm dual解析后的SQL為select * from dual原SQL為Select C1,c2 From tb解析后的SQL為select C1,c2 from tb原SQL為select c1,c2 from tb解析后的SQL為select c1,c2 from tb原SQL為select count(*) from t1解析后的SQL為select count(*) from t1原SQL為select c1,c2,c3 from t1 where condi1=1解析后的SQL為select c1,c2,c3 from t1 where condi1=1原SQL為Select c1,c2,c3 From t1 Where condi1=1解析后的SQL為select c1,c2,c3 from t1 where condi1=1原SQL為select c1,c2,c3 from t1,t2 where condi3=3 or condi4=5 order by o1,o2解析后的SQL為select c1,c2,c3 from t1,t2 where condi3=3 or condi4=5 order by o1,o2原SQL為Select c1,c2,c3 from t1,t2 Where condi3=3 or condi4=5 Order by o1,o2解析后的SQL為select c1,c2,c3 from t1,t2 where condi3=3 or condi4=5 order by o1,o2原SQL為select c1,c2,c3 from t1,t2,t3 where condi1=5 and condi6=6 or condi7=7 group by g1,g2解析后的SQL為select c1,c2,c3 from t1,t2,t3 where condi1=5 and condi6=6 or condi7=7 group by g1,g2原SQL為Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2解析后的SQL為select c1,c2,c3 from t1,t2,t3 where condi1=5 and condi6=6 or condi7=7 group by g1,g2原SQL為Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2,g3 order by g2,g3解析后的SQL為select c1,c2,c3 from t1,t2,t3 where condi1=5 and condi6=6 or condi7=7 group by g1,g2,g3 order by g2,g3解析效果之二(isSingleLine=true):原SQL為select * from dual解析后的SQL為select * from dual原SQL為SELECT * frOm dual解析后的SQL為select * from dual原SQL為Select C1,c2 From tb解析后的SQL為select C1, c2 from tb原SQL為select c1,c2 from tb解析后的SQL為select c1, c2 from tb原SQL為select count(*) from t1解析后的SQL為select count(*) from t1原SQL為select c1,c2,c3 from t1 where condi1=1解析后的SQL為select c1, c2, c3 from t1 where condi1=1原SQL為Select c1,c2,c3 From t1 Where condi1=1解析后的SQL為select c1, c2, c3 from t1 where condi1=1原SQL為select c1,c2,c3 from t1,t2 where condi3=3 or condi4=5 order by o1,o2解析后的SQL為select c1, c2, c3 from t1, t2 where condi3=3 or condi4=5 order by o1, o2原SQL為Select c1,c2,c3 from t1,t2 Where condi3=3 or condi4=5 Order by o1,o2解析后的SQL為select c1, c2, c3 from t1, t2 where condi3=3 or condi4=5 order by o1, o2原SQL為select c1,c2,c3 from t1,t2,t3 wher * e condi1=5 and condi6=6 or condi7=7 group by g1,g2解析后的SQL為select c1, c2, c3 from t1, t2, t3 where condi1=5 and condi6=6 or condi7=7 group by g1, g2原SQL為Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2解析后的SQL為select c1, c2, c3 from t1, t2, t3 where condi1=5 and condi6=6 or condi7=7 group by g1, g2原SQL為Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group by g1,g2,g3 order by g2,g3解析后的SQL為select c1, c2, c3 from t1, t2, t3 where condi1=5 and condi6=6 or condi7=7 group by g1, g2, g3 order by g2, g3使用的類SqlParser,你可以拷貝下來使用之:package *matter;import *ist;import *;import *r;import *n;/** * SQL語句解析器類 * @author: sitinspring(junglesong@*) * @date: 2008-3-12 */public class SqlParser{ /** * 逗號 */ private static final String Comma = ","; /** * 四個空格 */ private static final String FourSpace = " "; /** * 是否單行顯示字段,表,條件的標識量 */ private static boolean isSingleLine=true; /** * 待解析的SQL語句 */ private String sql; /** * SQL中選擇的列 */ private String cols; /** * SQL中查找的表 */ private String tables; /** * 查找條件 */ private String conditions; /** * Group By的字段 */ private String groupCols; /** * Order by的字段 */ private String orderCols; /** * 構造函數 * 功能:傳入構造函數,解析成字段,表,條件等。

          轉載請注明出處華閱文章網 » 解析sql語句

          短句

          端午語句

          閱讀(296)

          關于端午節詩句-描寫端午節的詩句有哪些端午臨中夏,時清人復長。 ——唐 李隆基《端午武成殿宴群官》 四時花競巧,九子粽爭新。 ——唐 李隆基《端午三殿宴群臣探得神字》 官衣亦有名,端午被恩榮。 細葛含風軟,香羅疊雪輕。 ——唐 杜甫《

          短句

          sql語句解析

          閱讀(296)

          如何分析SQL語句 - 多時候,我們不太清楚自己寫的SQL語句好還是不好,往往數據量一大,程序運行變慢。其實在SQL/PLUS里可以很清晰的分析出SQL語句的執行計劃,它可以提醒我們來創建索引或改變SQL語句的寫法。 先在sys用戶下運行@/ORACLE_

          短句

          查詢數據的sql語句

          閱讀(313)

          數據庫語言有哪些 數據庫語言最常用的是SQL (結構化查詢語言)。t-sql 是微軟SQL SERVER的SQL語句,兼容SQL,并具有SQL SERVER本身獨有的函數、關鍵字;pl/sql是針對Oracle數據庫的第三方工具;k-sql是國內最領先ERP

          短句

          mysql建庫語句

          閱讀(341)

          如何查看 mysql 建庫 建表語句 打開mySQL敲入代碼:show databases; 【按回車】 // 顯示所有庫;新建庫:create database db_stu ; 【按回車】使用庫:use db_stu ; 【按回車】在新建的db_stu庫

          短句

          緣的語句

          閱讀(240)

          有關緣分的句子 1、世上有很多事可以求,唯緣分難求。茫茫人海,浮華世界,多少人真正能尋覓到自己最完美的歸屬,又有多少人在擦肩而過中錯失了最好的機緣。或者又有多少人有正確的選擇卻站在了錯誤的時間和地點。有時緣去緣留只在人一念之間

          短句

          家經典語句

          閱讀(265)

          寫家的句子 ● 家是什么?是難舍的親情,是溫馨的集體,是親愛的祖國.在這里,父母用慈愛的傘為兒女撐起一方晴空,兒女用孝順的心給父母奉上一縷慰藉;在這里,洋溢著濃濃的師生之情,伙伴之誼 . ● 高山竹林是國寶熊貓的家,原始森林是珍稀植物的家,滔滔

          短句

          乘的語句

          閱讀(292)

          優美的句子摘抄 1 記不清有多少個夜晚,在我翻閱紙張的指間滑落;記不清有多少支蠟燭,在我的凝視中化為灰燼。逝者如斯,我時時刻刻會聽見自己對生命承諾的余音,感到歲月的流轉在漸漸稀釋我的年少無知,我愿自己是一只上足了發條的時鐘,在晝夜不停

          短句

          努力語句

          閱讀(303)

          努力的詩句 1、寶劍鋒自磨礪出,梅花香自苦寒來。2、書山有路勤為徑,學海無涯苦作舟。3、騏驥一躍,不能十步;駑馬十駕,功在不舍。4、黑發不知勤學早,白首方悔讀書遲。5、三人行,必

          短句

          sql語句執行順序

          閱讀(340)

          SQL 語句的執行順序 問題 SELECT從數據庫中檢索行,并允許從一個或多個表中選擇一個或多個行或列。雖然 SELECT 語句的完整語法較復雜,但是其主要的子句可歸納如下:SELECT select_list[ INTO new_table ] FROM

          短句

          case語句用法

          閱讀(378)

          Switch case 語句怎么使用 switch的用法是判斷case后面的表達式和switch后面的表達式是否相匹配,一旦case匹配,就會順序執行后面的程序代碼,而不管后面的case是否匹配,直到遇

          短句

          英語句子解析

          閱讀(348)

          英語好句摘抄及句子解析 1.Exit with your hands in the air.舉手出來 with your hands in the air = 我們更熟悉的:with your hands up 2.I'll make you a deal

          短句

          sql語句的執行順序

          閱讀(329)

          SQL 語句的執行順序 問題 SELECT從數據庫中檢索行,并允許從一個或多個表中選擇一個或多個行或列。雖然 SELECT 語句的完整語法較復雜,但是其主要的子句可歸納如下:SELECT select_list[ INTO new_table ] FROM

          短句

          歡迎的語句

          閱讀(322)

          描寫歡迎的詩句有哪些 1. 《永遇樂》晁端禮雪霽千巖,春回萬壑,和氣如許。今古稽山,風流人物,真是生申處。兒童竹馬,歡迎夾道,爭為使君歌舞。道當年、蓬萊朵秀,又來作蓬萊主。一編

          短句

          創建表空間語句

          閱讀(307)

          Oracle表空間創建語句,急//創建臨時表空間 create temporary tablespace test_temp tempfile 'E:\oracle\product\10.2.0\oradata\testserver\test_temp01.

          短句

          端午語句

          閱讀(296)

          關于端午節詩句-描寫端午節的詩句有哪些端午臨中夏,時清人復長。 ——唐 李隆基《端午武成殿宴群官》 四時花競巧,九子粽爭新。 ——唐 李隆基《端午三殿宴群臣探得神字》 官衣亦有名,端午被恩榮。 細葛含風軟,香羅疊雪輕。 ——唐 杜甫《

          短句

          sql語句解析

          閱讀(296)

          如何分析SQL語句 - 多時候,我們不太清楚自己寫的SQL語句好還是不好,往往數據量一大,程序運行變慢。其實在SQL/PLUS里可以很清晰的分析出SQL語句的執行計劃,它可以提醒我們來創建索引或改變SQL語句的寫法。 先在sys用戶下運行@/ORACLE_

          短句

          mysql建庫語句

          閱讀(341)

          如何查看 mysql 建庫 建表語句 打開mySQL敲入代碼:show databases; 【按回車】 // 顯示所有庫;新建庫:create database db_stu ; 【按回車】使用庫:use db_stu ; 【按回車】在新建的db_stu庫

          短句

          查詢數據的sql語句

          閱讀(313)

          數據庫語言有哪些 數據庫語言最常用的是SQL (結構化查詢語言)。t-sql 是微軟SQL SERVER的SQL語句,兼容SQL,并具有SQL SERVER本身獨有的函數、關鍵字;pl/sql是針對Oracle數據庫的第三方工具;k-sql是國內最領先ERP

          短句

          緣的語句

          閱讀(240)

          有關緣分的句子 1、世上有很多事可以求,唯緣分難求。茫茫人海,浮華世界,多少人真正能尋覓到自己最完美的歸屬,又有多少人在擦肩而過中錯失了最好的機緣。或者又有多少人有正確的選擇卻站在了錯誤的時間和地點。有時緣去緣留只在人一念之間

          短句

          sql語句教程

          閱讀(265)

          誰能教我幾句最常用的SQL語句 --語 句 功 能 --數據操作 SELECT --從數據庫表中檢索數據行和列 INSERT --向數據庫表添加新數據行 DELETE --從數據庫表中刪除數據行 UPDA

          短句

          乘的語句

          閱讀(292)

          優美的句子摘抄 1 記不清有多少個夜晚,在我翻閱紙張的指間滑落;記不清有多少支蠟燭,在我的凝視中化為灰燼。逝者如斯,我時時刻刻會聽見自己對生命承諾的余音,感到歲月的流轉在漸漸稀釋我的年少無知,我愿自己是一只上足了發條的時鐘,在晝夜不停

          短句

          家經典語句

          閱讀(265)

          寫家的句子 ● 家是什么?是難舍的親情,是溫馨的集體,是親愛的祖國.在這里,父母用慈愛的傘為兒女撐起一方晴空,兒女用孝順的心給父母奉上一縷慰藉;在這里,洋溢著濃濃的師生之情,伙伴之誼 . ● 高山竹林是國寶熊貓的家,原始森林是珍稀植物的家,滔滔

          <optgroup id="r9hwm"></optgroup><nav id="r9hwm"><label id="r9hwm"></label></nav>

            <tt id="r9hwm"><tr id="r9hwm"></tr></tt>
          1. 
            
          2. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

          3. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

                1. <listing id="r9hwm"></listing>
                  <delect id="r9hwm"></delect>
                  <optgroup id="r9hwm"><samp id="r9hwm"><ol id="r9hwm"></ol></samp></optgroup>
                  亚洲丰满少妇xxxxx高潮