Oracle客戶端編程
2024-08-29 13:40:59
供稿:網友
一、綁定變量
使用綁定變量可以減少Oracle對語句的硬分析,加快語句的執行。
樣例程序:VB
沒有使用綁定變量執行1000次 Insert 命令耗時 8.36 秒
使用綁定變量執行1000次 Insert 命令耗時 2.56 秒
使用綁定變量的速度為不使用綁定變量的 30%,假如在大量用戶集中執行此命令的情況下,效果更加明顯。
為什么使用綁定變量可以加快數據?
1、減少了Oracle對語句的分析。Oracle可以在緩存中直接使用上次已分析過的語句。
2、不需要對語句執行查詢路徑分析。直接使用上次的查詢路徑。
開發中注重事項:
1、編碼變得煩瑣,但為了以后沒有人找你麻煩,還是煩瑣一些好!
2、RDO 使用 rdoQuery 對象,ADO使用 Command 對象。java 使用 PReparedStatement。各種開發語言均有此類對象。
二、正確使用索引
語句 執行時間
錯誤 SELECT *
FROM xxy x
WHERE x.編號=1000000019 1.515秒
錯誤 SELECT *
FROM xxy x
WHERE upper(X.編號)='1000000019' 1.64秒
正確 SELECT *
FROM xxy x
WHERE x.編號='1000000019' 0.062秒
正確的語句與錯誤語句有何不同之處?
此例說明Oracle的隱式轉換數據功能可能誤導開發員,使開發員寫出蹩腳的SQL語句。
開發中注重事項:
1、 正確使用索引字段,并要注重查詢語句中的要害字類型與數據庫中索引字段的字段類型一致。
2、 不要在索引上使用函數。
3、 盡可能不使用Like、Is Null語句,而使用 >、< 代替。
三、 FROM語句
語句執行時間
錯誤 SELECT *
FROM d_fs fs,djb dj,xxyb xxy
WHERE dj.方式=fs.方式
AND fs.類型='什么類型'
AND dj.編號=xxy.編號 24.844秒
正確 SELECT *
FROM djb dj,xxyb xxy,d_fs fs
WHERE dj.方式=fs.方式
AND fs.類型='什么類型'
AND dj.編號=xxy.編號 4.453秒
Oracle的優化方式分為基于成本和基于規則的優化方式。
在使用基于規則的優化方案的時候,應將記錄數小的表寫在FROM語句的后面。
四、 EXISTS、NOT EXISTS
盡量不使用 In、Not In,而使用 Exists、Not Exists代替。
語句 執行時間
錯誤 SELECT *
FROM cfxb xd
WHERE xd.日期 BETWEEN SYSDATE-30 AND SYSDATE
AND xd.編號 NOT IN (SELECT zb.編號
FROM cfzb zb) 3.281秒
正確 SELECT *
FROM cfxxb xd
WHERE xd.日期 BETWEEN SYSDATE-30 AND SYSDATE
AND NOT EXISTS (SELECT 1
FROM cfzb zb
WHERE zb.編號=xd.編號) 0.172秒
剛開始使用Exists語句不如In語句直觀,大家習慣一下就可以了。
五、 其它事項
a) 在select、insert語句中不答應使用 * 代替所有字段,應明確指定字段名稱。
b) SQL語句中使用到多個表,應在select語句中明確使用表別名引用表中的字段。