mysql中or和in的效率問題


分三中情況進行測試,分別是:
第一種情況: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的查詢效率低很多

 

原文鏈接:

http://m.blog.chinaunix.net/uid-20639775-id-3416737.html

https://www.cnblogs.com/lixiuyuan999/p/6368871.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM