请问为什么IN条件比SQL中的“=”慢?

为什么IN条件比SQL中的“=”慢?检查问题此选择查询需要180秒才能完成。(查看对问题本身的评论)。
IN只能与一个值进行比较,但时差仍然很大。
为什么是那样?

慕容森
浏览 599回答 3
3回答

饮歌长啸

这很有趣,但问题也可以通过准备好的陈述来解决(不确定是否适合每个人),例如:mysql> EXPLAIN SELECT * FROM words WHERE word IN (SELECT word FROM phrase_words);+----+--------------------+--------------+...| id | select_type        | table        |...+----+--------------------+--------------+...|  1 | PRIMARY            | words        |...|  2 | DEPENDENT SUBQUERY | phrase_words |...+----+--------------------+--------------+...mysql> EXPLAIN SELECT * FROM words WHERE word IN ('twist','rollers');+----+-------------+-------+...| id | select_type | table |...+----+-------------+-------+...|  1 | SIMPLE      | words |...+----+-------------+-------+...所以,只需在存储过程中准备语句,然后执行它。以下是一个想法:SET @words = (SELECT GROUP_CONCAT(word SEPARATOR '\',\'') FROM phrase_words);SET @words = CONCAT("'", @words, "'");SET @query = CONCAT("SELECT * FROM words WHERE word IN (", @words, ");";PREPARE q FROM @query;EXECUTE q;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server