小编Mar*_*own的帖子

对某个日期范围内的计数列求和的性能问题

在我们的应用程序中,我们有一个查询,它在 API 端点上将具有“活动”的用户返回给指定的客户端或事件(一个或多个 - 由 ID 指定)。当活动表有 3000 万行时,这个查询大约需要 15 秒才能返回(注意“资产”表中还有约 60 万行和 2700 个“用户”)。

表格的粗略架构可以在我的问题的底部找到。下面是我们查找“活动超过阈值的用户”的查询。为简洁起见,我也在下面放置了视图定义。

当此端点返回一页数据时,还会运行第二个类似的查询以获取填充分页响应的元素总数 - 本质上,端点的性能是查询性能的 2 倍。

我的问题本质上是,我应该应用哪些技术来提高此查询的性能?我们试图坚持的“基准”是端点响应的“亚秒级”。

查询计划可以在这里找到。

SELECT DISTINCT t.type, t.sid, t.name, t.emailAddress, t.jobTitle
FROM sec.Trustee t
    INNER JOIN (
        SELECT data.sid, SUM(data.hoursBilled) as hoursBilled, SUM(data.docsAccessed) as docsAccessed,     data.asset_type as asset_type, data.displayId as displayId, data.displayName as displayName
        FROM (
            SELECT billing.trustee_sid as sid, 0 as hoursBilled, billing.recordedValue as docsAccessed, a.type as asset_type, a.displayId, a.displayName
            FROM sec._DocumentsBilling billing
            INNER JOIN sec.SessionSid s
            ON …
Run Code Online (Sandbox Code Playgroud)

sql-server aggregate sum

4
推荐指数
1
解决办法
208
查看次数

标签 统计

aggregate ×1

sql-server ×1

sum ×1