91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle之SQL_ID 1

發布時間:2020-07-21 21:24:02 來源:網絡 閱讀:976 作者:xiaofeng520ct 欄目:關系型數據庫

在Oralce里,一個sql語句執行時會生成很多信息:

  • SQL唯一標識

  • SQL文本信息

  • 綁定變量信息

  • 執行計劃和游標信息

  • 統計信息

  • 性能信息

  • 其他信息.例如sql來源,狀態等


SQL_ID

    在Oracle中,SQL優化器是負責解析sql的(包括<a>直接執行的sql和<b>存儲過程中的sql),<b>中的sql在提交sql優化器解析前,會進行一些預處理,包括大小寫,空格,注釋的處理等。

    在解析sql時,sql優化器會分配一個ID(子游標),唯一標識一個sql(存儲在v$sql視圖內)。相同的sql文本sql_id是一樣的(對應v$sqlarea中的數據,稱它為父游標),即使是不同的數據庫實例中,這個以后在介紹。其他視圖通過這個id引用這個sql,在9i中對應的是hash_value這個字段,11g中v$sql有字段old_hash_value對應9i的hash_value,sql_id和hash_value是通過一定的算法計算出來的。


1.直接執行的sql:

  在sql_window下執行 

select /*test*/* from scott.emp e where e.empno = 10; 
select /*test*/* from scott.emp e where e.empno =  10;
select /*test*/* from scott.emp E where e.empno =  10;

 查詢他們的sql信息

select * from v$sql v where v.SQL_TEXT like '%/*test*/%';

oracle之SQL_ID 1

可以看到如果兩個sql文本之間只要有任何的不同,就會生成不同的sql_id


2.存儲過程中的sql:

  分靜態sql和動態sql兩種,動態sql和第一種直接執行的sql一樣,我們關注一下靜態sql

declare
  v number;
begin
  select /*+test1*/e.sal into v from scott.emp e where e.empno = 7369; 
  select /*+test1*/e.sal into v from scott.emp e where e.empno =  7369;
  select /*+test1*/e.sal into v from scott.emp E  where e.empno =  7369; 
  
end;
/

  執行后,查詢sql信息,這里應該使用提示/*+xxx*/,注釋會被過濾掉

oracle之SQL_ID 1

從圖中可以看出,三個sql語句只生成了一個sql_id,說明plsql提交到sql優化器的時候做了一些預處理。


如果使用綁定變量呢?我們來看看有什么變化

declare
  v dbms_sql.Number_Table;
  xx number;
begin
  v(1) := 7369;
  v(1) := 7499;
  v(1) := 7521;

  for i in v.first .. v.last loop
    select /*+test2*/e.sal into xx from scott.emp e where e.empno = v(i);
  end loop;
end;
/

我們來看看sql_id情況

oracle之SQL_ID 1

我們看到也是只有一條sql語句的sql_id信息。e.empno = v(i) 被替換成了 綁定變量:B,當sql被提交到內存執行的時候,才會替換為具體的值并執行返回結果。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

厦门市| 达州市| 汕头市| 招远市| 夏河县| 曲沃县| 花莲市| 舒城县| 临海市| 社旗县| 会东县| 临高县| 涪陵区| 昌邑市| 凤山市| 南开区| 泰州市| 黄冈市| 定安县| 鹰潭市| 香格里拉县| 中山市| 雷山县| 容城县| 和顺县| 满城县| 五大连池市| 临桂县| 襄城县| 蒙阴县| 上栗县| 穆棱市| 广饶县| 普兰店市| 鄱阳县| 台南县| 望都县| 三原县| 克拉玛依市| 吐鲁番市| 镶黄旗|