首頁  >  文章  >  資料庫  >  mysql中in和or的差別是什麼

mysql中in和or的差別是什麼

WBOY
WBOY原創
2021-12-23 11:15:016105瀏覽

區別:1、in透過父查詢表和子自查詢表作hash連接操作查詢,or是對父查詢表作loop循環後再對子查詢表進行查詢;2、在沒有索引或主鍵的情況下,隨著in或or後面的資料量增多,or的執行效率會有明顯下降,in的執行效率不會明顯下降。

mysql中in和or的差別是什麼

本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。

mysql中in和or的差別是什麼

#做資料對比,千萬等級資料

sql語句中in和or的區別為:來操作不同、適合不同、執行效率不同。

一、操作不同

1、in:in是把父查詢表和子自查詢表作hash連接。

2、or:or是對父查詢表作loop循環,每次loop循環再對子查詢表進行查詢。

二、適合不同5261

1、in:in適合用於子查詢表資料比父查詢表資料多的情4102況。

2、or:or適合用於子查詢表資料比父查詢表資料少的情況。

三、執行效率不同

1、in:在沒有索引的情況下,隨著in後面的資料量越多,in的執行效率不會有太大的下降。

2、or:在沒有索引的情況下,隨著or後面的資料量越多,or的執行效率會有明顯的下降。

如果in和or所在列有索引或主鍵的話,or和in沒啥差別,執行計劃和執行時間都幾乎一樣。

如果in和or所在列沒有 索引的話,效能差異就很大了。在沒有索引的情況下,隨著in或or後面的資料量越多,in的效率不會有太大的下降,但是or會隨著記錄越多的話語表現下降非常厲害 

 因此在給in和or的效率下定義的時候,應該再加上一個條件,就是所在的列是否有索引或是否是主鍵。如果有索引或主鍵效能沒啥差別,如果沒有索引,效能差異就不是一點點!

推薦學習:mysql影片教學

#

以上是mysql中in和or的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn