获取每天创建的条目数

获取每天创建的条目数,第1张

获取每天创建的条目数

SELECt day, COALESCE(ct, 0) AS ct
FROM (SELECt now()::date - d AS day FROM generate_series (0, 6) d) d – 6, not 7
LEFT JOIN (
SELECt created_at::date AS day, count(*) AS ct
FROM entries
WHERe created_at >= date_trunc(‘day’, now()) - interval ‘6d’
GROUP BY 1
) e USING (day);


  • 为您的条件使用一个可扩展的表达式

    WHERe
    ,因此Postgres可以在上使用一个普通索引
    created_at
    。对于性能而言,其重要性远胜于其他所有性能。

  • 要涵盖一周(包括今天),请从“今天”开始减去6天,而不是7天。

  • 假设

    id
    已定义
    NOT NULL
    count(*)
    count(id)
    此处相同,但速度稍快。

  • 一个CTE将是矫枉过正这里。它更慢,更冗长。

  • 先聚集,然后加入。在这种情况下,速度更快。

  • now()
    是标准SQL
    CURRENT_TIMESTAMP
    (也可以使用)的Postgres实现的较短和更快的实现。

这应该是最短和最快的查询。用进行测试

EXPLAIN ANALYZE



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5144888.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存