SQL 在 Select 中使用 SUM() 在视图上创建索引
Posted
技术标签:
【中文标题】SQL 在 Select 中使用 SUM() 在视图上创建索引【英文标题】:SQL Create Index on View with SUM() in Select 【发布时间】:2012-03-29 18:21:11 【问题描述】:使用SQL2005,我需要创建一个视图来显示select语句如下:
select c1.personid, Max(c1.call_Date) Call_Date, Sum(s1.quantity) Num_Boxes,
from dbo.kits_dropped s1
inner join dbo.calls c1 on(c1.callsid = s1.callsid)
Where s1.product_name = 'Product X'
GRoup by c1.personid
如何在上面的视图中为 personID 创建索引?
谢谢!
【问题讨论】:
***.com/q/2615617/1176601 可能适用于您的问题.. 【参考方案1】:这里是创建indexed views in SQL 2005 的指南。
这可能会让您入门,这显示了一个在 personid
上具有聚集索引的视图:
CREATE VIEW MyView WITH SCHEMABINDING AS
SELECT
c1.personid,
MAX(c1.call_Date) AS Call_Date,
SUM(s1.quantity) AS Num_Boxes,
FROM dbo.kits_dropped s1
INNER JOIN dbo.calls c1 ON (c1.callsid = s1.callsid)
WHERE s1.product_name = 'Product X'
GROUP BY c1.personid
GO
CREATE UNIQUE CLUSTERED INDEX MyViewInd ON MyView(personid)
如果您遇到上述任何问题,请发表评论。
【讨论】:
啊,索引视图不喜欢 MAX。要解决此问题,您可以查看the solution proposed by Adam Haines in this MSDN forum post 并在可能的情况下使用bit
列修改kits_dropped
,并将最新(MAX)Call_Date
记录的值设置为1
。
If GROUP BY is present, the VIEW definition must contain COUNT_BIG(*)
,根据您在帖子中链接的手册页。以上是关于SQL 在 Select 中使用 SUM() 在视图上创建索引的主要内容,如果未能解决你的问题,请参考以下文章
SQL 语句 select sum(a) from table1 where b=3
SQL Server:带有内部 SELECT 和子 SELECT 的 SUM()。每次都出错