SQL條件語句中的OR與IN是否有差異 |
|
Leonli
一般會員 ![]() ![]() 發表:23 回覆:21 積分:18 註冊:2004-03-31 發送簡訊給我 |
|
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 請看下面語句,我用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, 程式較精簡也比較容易除錯 不知道我的觀念是否正確, 僅提供個人的看法! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |