gpt4 book ai didi

mysql - SQL :in clause with query taking too long compared to in clause with actual data

转载 作者:可可西里 更新时间:2023-11-01 07:04:29 29 4
gpt4 key购买 nike

我有 3 个 SQL 查询:

  1. 从 user_id =4 的用户中选择 student_id;//返回 35
  2. select * from student where student_id in (35);
  3. select * from student where student_id in (select student_id from user where user_id =4);

前 2 个查询用时不到 0.5 秒,但第三个查询与包含第一个子查询的第二个查询类似,大约需要 8 秒。

我根据需要对表进行了索引,但时间并没有减少。

有人可以给我一个解决方案或对此行为提供一些解释吗。

谢谢!

最佳答案

实际上,MySQL 在最后执行内部查询,它会扫描之前的每个索引。 MySQL 重写子查询以使内部查询完全依赖于外部查询。

例如,它从学生中选择 *(取决于您的数据库,但可能会返回很多结果),然后将内部查询 user_id=4 应用于先前的结果。

开发团队正在解决这个问题,应该会在 6.0 中“解决”http://dev.mysql.com/doc/refman/5.5/en/optimizing-subqueries.html

编辑:

在您的情况下,您应该使用 JOIN 方法。

关于mysql - SQL :in clause with query taking too long compared to in clause with actual data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17318523/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com