sql-server - SQL Server 创建包含不同或分组依据的 View 索引

标签 sql-server sql-server-2008 indexed-view

这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the help center .




8年前关闭。




我的 SQL 服务器数据库中有一个地址数据表。此表未规范化,因此它包含许多重复的地址。每个唯一的地址都可以由一个 Id 字段标识(这些 id 在表中经常重复)。

所以我在表上创建了一个 View 来提取所有唯一地址,使用原始表中的 Select Distinct(AddressId)。

现在我想在这个 View 上创建一个索引来提高搜索速度,但是 SQL Server 不允许我在 View 上创建一个索引,因为它包含一个不同的或分组的(我已经尝试了两者,看看它是否会允许我创建索引)

有没有人对此有任何解决方案?或对替代方法的任何看法。

我需要根据地址关键字查询此 View ,并根据匹配计数返回这些 View ,我已准备好此查询,我正在尝试通过索引 View 中的字段来加快速度。

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在索引 View 中,只要:

If GROUP BY is specified, the view select list must contain a COUNT_BIG(*) expression, and the view definition cannot specify HAVING, ROLLUP, CUBE, or GROUPING SETS.



Taken from MSDN

包括但只是忽略必要的 COUNT_BIG(*) 列。

关于sql-server - SQL Server 创建包含不同或分组依据的 View 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501825/

相关文章:

sql-server - 使用同义词跨数据库共享存储过程

sql-server - 日期部分(年份,...)与年份(...)

sql - SSRS 从报告中删除列

sql - 如果任何记录(带有 fieldvalue1)的 fieldvalue3 具有特定值,则选择带有 fieldvalue1 的所有记录

sql - 索引 View 更新时

sql-server - 为什么查询优化器完全忽略索引 View 索引?

sql - 如何根据范围从 1 到 69 的数字列表创建包含 5 个数字排列的列表?

sql-server - 如何加快重新创建集群索引

sql - 使用 t-SQL 选择已删除记录的数量