我的任务是优化这个查询:
Declare @sumBalance NUMERIC = (select SUM(CURRENT_BALANCE) as Balance
from dbo.ACCOUNT_DETAILS)
select @sumBalance
我读过聚合函数的最佳解决方案是使用索引视图而不是表。
我用 SCHEMABINDING 创建了视图:
CREATE VIEW dbo.CURRENT_BALANCE_VIEW
WITH SCHEMABINDING
AS
SELECT id,CURRENT_BALANCE
FROM dbo.ACCOUNT_DETAILS
之后,我创建了 2 个索引:
身份证第一
CREATE UNIQUE CLUSTERED INDEX index_ID_VIEW ON dbo.View(ID);
CURRENT_BALANCE 我的第二个专栏的第二个
CREATE NONCLUSTERED INDEX index_CURRENT_BALANCE_VIEW
ON dbo.CURRENT_BALANCE_VIEW(ID);
在这里我遇到了新查询的麻烦:
Declare @sumBalance NUMERIC = (select SUM(CURRENT_BALANCE) as Balance
from dbo.CURRENT_BALANCE_VIEW)
select @sumBalance
新查询不使用视图
不知何故,我的索引被添加到文件夹中
Statistics
看另一个帖子
我不明白为什么我可以看到索引'index_current_balance',因为表中没有这样的索引
看另一个帖子
PS已经尝试在表中创建索引并且它有所帮助。它使查询的工作速度从 0.2 Es.operator 成本提高到 0.009,但无论如何它必须更快。
pss 抱歉让你点击链接,我的名声不允许我正确地过去图片 =\
psss 使用 SQL Server 2014
pssss 刚刚意识到我不需要对 0-s 求和。期望他们 grom 功能。
提前致谢。