优化视图的 'Most Recent Month' 查询

Optimizing 'Most Recent Month' query for View

我目前有一个连接查询,我正在使用它来构建一个视图,该视图 returns 只有最近一个月内创建的那些记录,如下所示:

CREATE VIEW [dbo].[MostRecentMonth] AS
SELECT <fields>
FROM dbo.CensusFile
INNER JOIN (
    SELECT MAX(CENSUS_MONTH) as MAXMONTH FROM dbo.CensusFile
)
AS child ON (dbo.CensusFile.CENSUS_MONTH = child.MAXMONTH)
GO

查询正在返回我期望的结果,但一直在寻找一种更优化的方法来更有效地构建针对大型数据集的 运行 查询。任何建议表示赞赏。

为了便于阅读,我会将标准移至它所属的 WHERE 子句:

CREATE VIEW dbo.MostRecentMonth AS
SELECT <fields>
FROM dbo.CensusFile
WHERE census_month = (SELECT MAX(census_month) FROM dbo.CensusFile);

另一种选择是 window 函数,但我认为它不会更快,而且可读性更差。

CREATE VIEW dbo.MostRecentMonth AS
SELECT <fields>
FROM
(
  SELECT <fields>, MAX(census_month) OVER () AS maxmonth
  FROM dbo.CensusFile
) with_maxmonth
WHERE census_month = maxmonth;

对于这两个查询最重要的是您在 census_month:

上有一个索引
CREATE INDEX idx ON MostRecentMonth(census_month);