小编Ben*_*Ben的帖子

SQL Server 查询扫描的分区比预期的多

所以我的团队在我们的存储过程之一中有以下选择语句

SELECT
    ai.Name
    ,dc.Component 
    ,SUM(dc.Value) Value
FROM 
    Warm.DailyCosts dc
    JOIN Warm.AccountInfo ai
        ON dc.AccountInfoId = ai.Id
WHERE
    ai.CorrelationId = '00000000-0000-0000-0000-000000000000'
    AND ((dc.CalendarId >= (20190601 + ai.DayOfMonth - 1)
        AND dc.CalendarId < 20190701)
    OR (dc.CalendarId >= 20270601
        AND dc.CalendarId < (20270601 + ai.DayOfMonth - 1)))
GROUP BY        
    Name
    ,Component
Run Code Online (Sandbox Code Playgroud)

我们按如下方式对每年的几个月的 DailyCosts 表进行了分区:

CREATE PARTITION FUNCTION [PF_CostDateByYearMonth](int) AS RANGE RIGHT FOR VALUES (
    20180101,
    20180201,
    20180301,
    20180401,
    20180501,
    20180601,
    20180701,
    20180801,
    20180901,
    20181001,
    20181101,
    20181201,

    ...

    20300101,
    20300201,
    20300301,
    20300401,
    20300501,
    20300601, …
Run Code Online (Sandbox Code Playgroud)

sql-server partitioning

5
推荐指数
1
解决办法
304
查看次数

标签 统计

partitioning ×1

sql-server ×1