为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕盖茨4494581 2019-07-17 18:09:48
为什么IN条件比SQL中的“=”慢?检查问题此选择查询需要180秒才能完成。(查看对问题本身的评论)。IN只能与一个值进行比较,但时差仍然很大。为什么是那样?
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

这很有趣,但问题也可以通过准备好的陈述来解决(不确定是否适合每个人),例如:


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;


查看完整回答
反对 回复 2019-07-17
  • 3 回答
  • 0 关注
  • 1123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信