分三中情況進行測試,分別是:
第一種情況:in和or所在列為主鍵的情形。
第二種情況:in和or所在列創建有索引的情形。
第二種情況:in和or所在列沒有索引的情形。
每種情況又采用不同的in和or的數量進行測試。由於測試語句的數據量有4種情況,我這里就稱為A組、B組、C組、D組,其中A組為3個值,B組為150個值,C組為300個值,D組為1000個
測試結果如下:
第一種情況,ID列為主鍵的情況,4組測試執行計划一樣,執行的時間也基本沒有區別。
A組or和in的執行時間: or的執行時間為:0.002s in的執行時間為:0.002s
B組or和in的執行時間: or的執行時間為:0.004s in的執行時間為:0.004s
C組or和in的執行時間: or的執行時間為:0.006s in的執行時間為:0.005s
D組or和in的執行時間: or的執行時間為:0.018s in的執行時間為:0.014s
第二種情況,ID列為一般索引的情況,4組測試執行計划一樣,執行的時間也基本沒有區別。
A組or和in的執行時間: or的執行時間為:0.002s in的執行時間為:0.002s
B組or和in的執行時間: or的執行時間為:0.006s in的執行時間為:0.005s
C組or和in的執行時間: or的執行時間為:0.008s in的執行時間為:0.008s
D組or和in的執行時間: or的執行時間為:0.021s in的執行時間為:0.020s
第三種情況,ID列沒有索引的情況,4組測試執行計划一樣,執行的時間也基本沒有區別。
A組or和in的執行時間: or的執行時間為:5.016s in的執行時間為:5.071s
B組or和in的執行時間: or的執行時間為:1min 02s in的執行時間為:5.018s
C組or和in的執行時間: or的執行時間為:1min 55s in的執行時間為:5.018s
D組or和in的執行時間: or的執行時間為:6min 17s in的執行時間為:5.057s
結論:
1.in或or在字段有添加索引的情況下,查詢很快,兩者查詢速度沒有什么區別;
2.in或or在字段沒有添加索引的情況下,所連接的字段越多(1or2or3or4or......),or比in的查詢效率低很多
原文鏈接: