星期二, 9月 15, 2009

在 MS-SQL 裡用 Like 來取代 IN

今天看到一篇文章SQL Dynamic In..裡面內容是在講怎麼把 ms-sql 裡面的運算子 in 換成 like 取得同樣的結果..讓我忽然想到我之前的一篇文章解決Sql Parameter碰上SQL Where In問題,馬上測試一下..

在有索引下執行..

select *
from Orders as o
where ',10254,10257,10261,' like '%,' + ltrim(rtrim(str(o.OrderID))) + ',%'

select *
from Orders as o
where o.OrderID in (10254,10257,10261)

image

有index果然還是in效率有好..

無索引下執行..

select *
from Orders as o
where o.ShipCity in ('Reims','Bern','Graz');

select *
from Orders as o
where ',Reims,Bern,Graz,' like '%,' + ltrim(rtrim(o.ShipCity)) + ',%'

image

沒索引下..就差不多啦..

各位看官參考一下..服用前請確認有副作用..在慢慢服下阿..^______^..

參考:
http://msdn.microsoft.com/zh-tw/library/ms189826%28SQL.90%29.aspx

沒有留言: