程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle綁定變量如何提升相關效率

Oracle綁定變量如何提升相關效率

編輯:Oracle數據庫基礎

當我們把一個sql語句提交完後,Oracle綁定變量會檢查一下在共享緩沖池(shared pool)中有無與之完全相同的相關語句,如果有的話只須執行軟分析即可,否則就得進行硬分析。以下就是文章的具體內容介紹。
而唯一使得Oracle 能夠重復利用執行計劃的方法就是采用綁定變量。綁定變量的實質就是用於替代sql語句中的常量的替代變量。綁定變量能夠使得每次提交的sql語句都完全一樣。

在字段(包括字段集)建有索引,且字段(集)的集的勢非常大(也就是有個值在字段中出現的比例特別的大)的情況下,使用綁定變量可能會導致查詢計劃錯誤,因而會使查詢效率非常低。這種情況最好不要使用綁定變量。

但是並不是任何情況下都需要使用綁定變量,下面是兩種例外情況:

1.對於隔相當一段時間才執行一次的SQL語句,這是利用綁定變量的好處會被不能有效利用優化器而抵消

2.數據倉庫的情況下。

綁定變量不能當作嵌入的字符串來使用,只能當作語句中的變量來用。不能用Oracle綁定變量來代替表名、過程名、字段名等.

從效率來看,由於Oracle10G放棄了RBO,全面引入CBO,因此,在10G中使用綁定變量效率的提升比9i中更為明顯。

舉例:

普通sql語句:

SELECT fname, lname, pcode FROM cust WHERE id = 674;

SELECT fname, lname, pcode FROM cust WHERE id = 234;

SELECT fname, lname, pcode FROM cust WHERE id = 332;

含綁定變量的sql 語句:

SELECT fname, lname, pcode FROM cust WHERE id = :cust_no;

Sql*plus 中使用Oracle綁定變量:

SQL> set timing on

SQL> variable x number;

SQL> exec :x :=8

PL/SQL 過程已成功完成。

已用

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved