栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

获取每天创建的条目数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取每天创建的条目数

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441569.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号