作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我写了一个看起来很简单的SQL查询,主键x的tableA,ytime是时间戳字段。
select a.x, b.z from
# tableA join tableB etc.
where a.id not in (select x from tableA where a.ytime is not null)
还有另一个与此类似的堆栈流,但它只讨论较小的数据子集。
不确定我是否需要索引 ytime 列。
最佳答案
我没有科学来支持这一点——只有先例历史,但对于“in”列表非常大的情况,我发现半连接(或本例中的反连接)通常很多比 in 列表更有效:
select a1.x, b.z
from
tableA a1
join tableB b on ...
where not exists (
select null
from tablea a2
where a1.id = a2.x and a2.ytime is not null
)
当我说重要时,一个查询比使用 in-list 运行了几分钟在我将其更改为 semi 后仅几秒钟就运行了。
尝试一下,看看是否有所不同。
我做了一些假设,因为您的代码主要是概念性的,但我认为您明白了。
关于sql - 为什么在 Postgres 中将带有 NOT IN 的 where 子句添加到慢的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47572266/
我是一名优秀的程序员,十分优秀!