全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1350
推到 Plurk!
推到 Facebook!

SQL條件語句中的OR與IN是否有差異

 
Leonli
一般會員


發表:23
回覆:21
積分:18
註冊:2004-03-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-13 13:52:05 IP:220.248.xxx.xxx 未訂閱
請看下面語句,我用MS_SQL資料庫,Delphi的ADODataSet元件,兩句在執行速度方面是否有差異?(條件很多的時候,不止以下abc三個,可能幾十個) where group in (a,b,c) 與 where group='a' or group='b' or group =‘c'
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-15 08:40:54 IP:61.71.xxx.xxx 未訂閱
引言: 請看下面語句,我用MS_SQL資料庫,Delphi的ADODataSet元件,兩句在執行速度方面是否有差異?(條件很多的時候,不止以下abc三個,可能幾十個) where group in (a,b,c) 與 where group='a' or group='b' or group =‘c' 發表人 - leonli 於 2005/04/14 14:43:56
我並沒有實際的去測這樣的情況, 不過依據一般的基礎理論來說 使用 or 的比較慢(在一定量的筆數及條件) 按本例來看, in 與 or 的用法是十分接近, 但任何sql語法都是要送到sql系統進行解析後才會被執行, 我們這樣來說, 你的子句越長當然sql所要花的解析時間就越長, 而且使用 or 的方式是一個一個group比對, 也就是有10次or, 那sql會對同一個group取10次值再比對值, 最後再彙總結果判斷所有的or是否符合, 送回結果, 反觀in則不一樣, 因為sql先將 in內的值先存入buffer中, 接下來以group值直接對 in 值配對, 這樣的速度當然要快, 但實際上效能會差多少, 以現在的電腦配備級數來說, 可能不太容易分的出來, 如果真想測, 使用更早的電腦如386, 然後透過INTERNET(TCP/IP)方式, 資料放在遠端主機的方式來進行, 或許可以測得數據, 或者自己寫一支程式, 不斷對100萬筆資料進行 IN 與 OR的讀取, 然後比對時間結果也是可以的啦! PS.如果條件真的很多, 我大部份都使用 IN 的方式來代替 OR, 程式較精簡也比較容易除錯 不知道我的觀念是否正確, 僅提供個人的看法!
系統時間:2024-08-05 16:34:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!