postgresql where子句中的内部查询在postgres中花费时间[关闭]

64jmpszr  于 12个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(79)

已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

上个月关门了。
Improve this question
我试图从具有最大生效日期但日期不应大于当前日期的表中检索记录,因此我添加了内部查询,但添加内部查询后需要很长时间才能返回结果。

select
* 
from 
   mytable 
where 
   empno = '1234' 
and  
   effect_date = (select
        max(effect_date)
   from 
        mytable 
   where 
        empno = '1234' 
   and 
        effect_date <= current_date)

有没有人可以建议我如何优化它。
先谢了。

nhaq1z21

nhaq1z211#

你可以使用以下命令来避免 get max date 子查询:

select * 
  from mytable 
 where empno = '1234'
   and effect_date > current_date 
 order by effect_date desc
 limit 1;

但这涉及到排序。它可能不会更快,但你不知道,直到你尝试。尽管如此,它仍然会受益于empnoeffect_date的索引。

相关问题