mysql查詢時快時慢,mysql查詢中in和多個or的區(qū)別?
多數(shù)據(jù)庫服務(wù)器都只把IN()看作多個OR的同義詞,因為它們在邏輯上是相等的。
MYSQL不是這樣的,它會對IN()里面的數(shù)據(jù)進行排序,然后用二分法查找個是否在列表中,這個算法的效率是O(Logn),而等同的OR子句的查找效率是O(n)。
在列表很大的時候,OR子句就會變得慢得多。
多數(shù)據(jù)庫服務(wù)器都只把IN()看作多個OR的同義詞,因為它們在邏輯上是相等的。
MYSQL不是這樣的,它會對IN()里面的數(shù)據(jù)進行排序,然后用二分法查找個是否在列表中,這個算法的效率是O(Logn),而等同的OR子句的查找效率是O(n)。
在列表很大的時候,OR子句就會變得慢得多。