【问题标题】:Postgresql Date Range - Most Efficient Want To Query Rows Prior To a DatePostgresql 日期范围 - 最有效的想要查询日期之前的行
【发布时间】:2021-12-16 13:57:18
【问题描述】:

考虑一个包含日期范围的持续时间字段的表。

有没有比以下方法更有效地查询持续时间已超过某个日期的记录:

SELECT * FROM mytable WHERE upper(duration) < '2021-11-01'::date;

我会想象在每一行上运行一个函数(上部)会比可以本机利用索引的东西慢吗?这是最有效的方法吗?

【问题讨论】:

  • 类似select daterange('2021-10-01', '2021-10-31', '()') &lt;&lt; daterange('2021-11-01',null); tselect daterange('2021-10-01', '2021-10-31', '()') @&gt; '2021-11-01'::date;?

标签: postgresql date-range


【解决方案1】:

你可以像这样使用“strictly left of”运算符&lt;&lt;

WHERE duration << DATERANGE '[2021-11-01,2021-11-01]'´;

当然,操作符会更昂贵,但是您节省了额外的函数调用。我希望这是一场胜利,但你应该用一张大桌子来测试它。

【讨论】:

    猜你喜欢
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多