這篇文章主要講解了“MySQL中in和or的區(qū)別有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“mysql中in和or的區(qū)別有哪些”吧!
成都創(chuàng)新互聯(lián)公司是一家企業(yè)級云計算解決方案提供商,超15年IDC數(shù)據(jù)中心運營經(jīng)驗。主營GPU顯卡服務(wù)器,站群服務(wù)器,聯(lián)通機房服務(wù)器托管,海外高防服務(wù)器,成都機柜租用,動態(tài)撥號VPS,海外云手機,海外云服務(wù)器,海外服務(wù)器租用托管等。
區(qū)別:1、in通過父查詢表和子自查詢表作hash連接操作查詢,or是對父查詢表作loop循環(huán)后再對子查詢表進行查詢;2、在沒有索引或者主鍵的情況下,隨著in或or后面的數(shù)據(jù)量增多,or的執(zhí)行效率會有明顯下降,in的執(zhí)行效率不會明顯下降。
本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。
mysql中in和or的區(qū)別是什么
做數(shù)據(jù)對比,千萬級別數(shù)據(jù)
sql語句中 in和or的區(qū)別為:來操作不同、適合不同、執(zhí)行效率不同。
一、操作不同
1、in:in是把父查詢表和子自查詢表作hash連接。
2、or:or是對父查詢表作loop循環(huán),每次loop循環(huán)再對子查詢表進行查詢。
二、適合不同5261
1、in:in適合用于子查詢表數(shù)據(jù)比父查詢表數(shù)據(jù)多的情4102況。
2、or:or適合用于子查詢表數(shù)據(jù)比父查詢表數(shù)據(jù)少的情況。
三、執(zhí)行效率不同
1、in:在沒有索引的情況下,隨著in后面的數(shù)據(jù)量越多,in的執(zhí)行效率不會有太大的下降。
2、or:在沒有索引的情況下,隨著or后面的數(shù)據(jù)量越多,or的執(zhí)行效率會有明顯的下降。
如果in和or所在列有索引或者主鍵的話,or和in沒啥差別,執(zhí)行計劃和執(zhí)行時間都幾乎一樣。
如果in和or所在列沒有 索引的話,性能差別就很大了。在沒有索引的情況下,隨著in或者or后面的數(shù)據(jù)量越多,in的效率不會有太大的下降,但是or會隨著記錄越多的話性能下降 非常厲害
因此在給in和or的效率下定義的時候,應(yīng)該再加上一個條件,就是所在的列是否有索引或者是否是主鍵。如果有索引或者主鍵性能沒啥差別,如果沒有索引,性能差別不是一點點!
感謝各位的閱讀,以上就是“mysql中in和or的區(qū)別有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對mysql中in和or的區(qū)別有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!