sql - 与直接在 IN 子句中给出列表的查询相比,雅典娜 IN 子句中的子查询给出不同的结果
问题描述
我有以下查询:
select *
from Table1
where NUMid in (select NUMid
from Table2
where email = 'xyz@gmail.com')
我的意图是从 table2 中获取电子邮件值等于 xyz@gmail.com 的所有 NUMid 列表,并使用这些 NUMid 列表从 Table1 中查询。当我直接将 NUMids 列表(电子邮件 = xyz@gmail.com)放在 IN 子句中时,扫描的数据非常少。例如:
select *
from Table1
where NUMid in (123,456,789,345)
但是,如果运行第一个查询,其中内部查询也给出了 NUMids 列表,则扫描的数据非常大。
即使在逻辑上两个查询都是相同的,为什么会有这样的差异?** 在我的情况下,子查询是一个小表,只扫描几 kb,所以我假设它不应该有助于高数据扫描
解决方案
推荐阅读
- command-line - 使用“rm”从另一个目录远程删除文件?
- javascript - 如何使用 javascript-client 关闭与 sse Flux 的连接?
- c# - C# 8 switch 表达式:一次处理多个案例?
- ruby-on-rails - 验证失败:[attribute] 不能为空 - (但不是!?)
- mysql - 外键可以存储与主键值不匹配的值吗?
- python - 从字符串的开头和结尾删除非字母字符
- javafx - 我选择了一个窗格,但我想设置对齐方式,可以吗?
- python - 如何在 pyinstaller 中设置隐藏导入
- java - Java:FileOutputStream 和 FileInputStream 一起放在同一个文件上
- python - 从嵌套列表中删除初始项目