SQL Server创建视图索引包含不同或组
我有我的SQL服务器数据库中的地址数据表。这个表格没有被标准化,因此它包含许多重复的地址。每个唯一的地址可以通过Id字段来识别(这些ID在表格中经常重复)。SQL Server创建视图索引包含不同或组
所以我创建了一个视图在表中提取所有的唯一地址,使用从原始表中选择独特(AddressId)。
现在我想在这个视图上创建一个索引来增加搜索的速度,但SQL服务器不允许我在视图上创建一个索引,因为它包含一个独特的或分组的(我已经尝试过看看它是否会允许我创建索引)
有没有人有任何解决方案?或任何意见,以另一种方式来做到这一点。
我需要根据地址关键字查询这个视图,并返回基于匹配计数的视图,我有这个查询到位,我试图通过索引视图中的字段来加速它。
SQL Server 2008中
SELECT
AddressId,
AddressNumber,
AddressName,
Town,
City,
Country,
COUNT_BIG(*) As AddCount--,
--TRIM(AddressNumber + ' ') + LTRIM(AddressName + ' ') + LTRIM(Town + ' ') + RTRIM(City + ' ') AS AddressLookup
FROM
[Address] A
GROUP BY
AddressId,
AddressNumber,
AddressName,
Town,
City,
Country
是我的查询....
,如果我拿出柱AddressLookup我可以添加索引
干杯
您可以使用GROUP BY
在索引视图中只要:
如果指定了GROUP BY,则视图选择列表必须包含COUNT_BIG(*)表达式,并且视图定义不能指定HAVING,ROLLUP,CUBE或GROUPING SETS。
包括但恰恰忽略了必要的COUNT_BIG(*)列。
当我使用group by和count_big(*) 如果在试图在视图上创建索引时出现以下错误: 无法在视图'AddressLookup'上创建聚簇索引'Idx_AddressId',因为视图的选择列表包含聚合函数或分组列的结果上的表达式。考虑从选择列表中删除聚合函数或分组列的结果上的表达式。 – BBurke 2010-08-17 11:58:38
您必须使用'COUNT_BIG'之外的其他聚合函数。您将无法使用AVG,MAX,MIN,STDEV,STDEVP,VAR或VARP聚合函数。请参阅我链接到的文档以获取完整详细信息。 – 2010-08-17 12:13:42
嗨丹尼尔我没有其他聚合在视图中...正如你可以在帖子中看到它,当我连接列到一个导致我的问题 – BBurke 2010-08-17 13:28:42
SQL Server的确在索引视图中允许GROUP BY
甚至可以追溯到[SQL2000] [1]您确定没有查看可更新视图的限制吗?
继您的编辑。作为一个计算列推送连接到表中
CREATE TABLE [Address]
(
AddressId INT ,
AddressNumber INT,
AddressName VARCHAR(50),
Town VARCHAR(50),
City VARCHAR(50),
Country VARCHAR(50),
AddressLookup AS LTRIM(AddressNumber + ' ') + LTRIM(AddressName + ' ') + LTRIM(Town + ' ') + RTRIM(City + ' ')
)
GO
CREATE VIEW AV WITH SCHEMABINDING
AS
SELECT
AddressId,
AddressNumber,
AddressName,
Town,
City,
Country,
COUNT_BIG(*) As AddCount,
AddressLookup
FROM
dbo.[Address]
GROUP BY
AddressId,
AddressNumber,
AddressName,
Town,
City,
Country,
AddressLookup
go
CREATE UNIQUE CLUSTERED INDEX [ix_clustered] ON [dbo].[AV]
(
[AddressId] ASC
)
问题是组中的列数。
我实际上有11列im试图组合,如果我拿走这些列之一,然后一切工作正常。
它可能有它的2列:
CREATE UNIQUE CLUSTERED INDEX [ix_clustered] ON [dbo].[AV]
(
[AddressId] ASC,
[CityId] ASC,
)
SQL Server不会允许'GROUP BY”索引视图。你在什么版本上? – 2010-08-17 11:25:31