多條件判斷查詢使用三種方法 1.直接串指令 2.TSQL WHEN 3.Is Null 效能比較
2012-02-20 10:56
543 查看
多條件判斷查詢使用三種方法1.直接串指令2.TSQLWHEN3.IsNull效能比較
2008/3/1118:21|閱讀數:5194|1人收藏
2人推薦
我要推薦|
TSQL|訂閱
在MSDNFORUM小朱多條件查詢SQL 查詢的討論中, 說明到關於效能的問題,Dotjum這邊就就使用執行計畫作一各小小的比較,
(這邊強調一下,因為Dotjum不太會用執行計畫評估成本, 所以是直接看最後一個數據,若有錯誤,還請各位多多指教) 這次多條件的查詢,Dotjum增加了再看SubText中的Procedure中,
有看到另一種多條建的查詢語法使用IsNull,話不多說, 就來看整個比較,首先我使用了AdventureWorks資料庫,總共資料約121317筆資料。
useAdventureWorks --總共121317 SELECTCOUNT(*)FROM Sales.SalesOrderDetail
1.第一種比較就直接是命令字串的方式
--直接串命令方式 SELECT*FROM Sales.SalesOrderDetail WHERECarrierTrackingNumber='4911-403C-98' /* AND ProductID=776 */
2.採用CASEWEHN的方式
DECLARE@CarrierTrackingNumbervarchar(20) SET@CarrierTrackingNumber='4911-403C-98' DECLARE@ProductIDint SET@ProductID=0 SELECT*FROM Sales.SalesOrderDetail WHERECarrierTrackingNumber= CASE@CarrierTrackingNumber WHEN''THENCarrierTrackingNumberELSE@CarrierTrackingNumberEND AND ProductID= CASE@ProductID WHEN0THENProductIDELSE@ProductIDEND
3.使用ISNULL
DECLARE@CarrierTrackingNumbervarchar(20)
SET@CarrierTrackingNumber='4911-403C-98'
DECLARE@ProductIDint
SET@ProductID=null
SELECT*FROM
Sales.SalesOrderDetail
WHERE
(CarrierTrackingNumber=
@CarrierTrackingNumberOR@CarrierTrackingNumberISNULL)
AND
(ProductID=@ProductIDOR@ProductIDISNULL)
依序是1.直接串指令2.CASEWHEN3.ORISNULL方式比較
Dotjum以子樹成本來看的話(如果有專家可以指正的錯誤的觀念還麻煩請多指教),
1.直接串指令是最快2.ORISNULL次快3.CASEWHEN最慢
但因為單機執行,也無法就決定性的說哪一個比較好,但Dotjum自己的觀念是如果能夠把參數都決定好,
在程式上比較好控制(這是我自己覺得的),當然如果做好一個專門串指令的Class,或許也不會那麼複雜,
效能方面也可以感覺起來比較好,還請各位多給指教。
相关文章推荐
- 搜索文件指令及其使用方法
- 九、访问内存的要素以及INC和LOOP指令和Debug使用方法的扩
- SQL Case when 的使用方法
- 直接使用editbox.clear()清空时,有时会无法清除完全,此时有清空文本框的另一种方法
- SQL Case when 的使用方法
- VirtualBox中直接使用本机物理串口的方法(缺图)
- INT 21H指令说明及使用方法
- SQL Case when 的使用方法
- 在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
- SQL的case和when的使用方法
- C++ 把枚举变量的名称,直接当字符串使用方法 字符串化符号 #
- 工厂方法模式(Factory Method Pattern)应用篇(直接使用工厂方法)
- INT 21H 指令说明及使用方法
- tomcat下发布的网站使用域名直接访问的方法
- win7安装composer 不能直接安装 使用间接安装方法
- gdb调试常用指令及如何使用gdb调试多进程 (attach方法)
- python直接生成exe的方法(使用py2exe)
- 转:使用IL的方式直接跟踪exception到行的方法
- 使用授权的手机直接通过网页安装app的方法
- EXISTS/NOT EXISTS CASE WHEN等使用方法