在回答this SQL question時,我遇到了一個聲明,即固定值IN()
運算符比具有相同內容的INNER JOIN
慢得多,以至於它更好爲這些值創建臨時表並加入它們。這是真的嗎(一般來說,使用MySQL,任何其他SQL引擎),如果是的話 - 爲什麼?直觀地說,IN
應該更快 - 您將潛在的匹配與固定的一組值相比較,這些值已經以內存和所需格式存在,而使用JOIN時,您必須查閱索引,可能會從磁盤加載數據,以及執行IN可能不需要的其他操作。我錯過重要的東西嗎?SQL固定值IN()與INNER JOIN性能
請注意,與this question不同,它有很多重複項,我說的是IN()
有固定的一組值,而不是子查詢。
這絕對是不同的數據庫平臺之間的東西。在我使用SQL Server和PostgreSQL的經驗中,針對索引的常量上的「IN」子句非常快。 – Pointy 2011-01-22 23:09:21
您鏈接的問題是SQL Server。不知道你是否已經意識到,但MySQL可以是非常糟糕的[與子查詢](http://stackoverflow.com/questions/3417074/why-would-an-in-condition-be-slower -than-in-sql/3417190#3417190) – 2011-01-22 23:15:09