gpt4 book ai didi

sql-server-2005 - 如何在 sql 2005 中使用 select unique 语句创建索引 View

转载 作者:行者123 更新时间:2023-12-03 01:26:53 25 4
gpt4 key购买 nike

我的名为“Ge_Entry”的 View 运行非常非常慢,因此想要使用 select unique 语句创建索引 View ,但 sql server 不允许。

所以我想知道有没有办法用 s.dist 语句创建 i.view 。

这样我就可以在此 View 上创建索引以获得快速结果。

谢谢

尼尔

最佳答案

您不能使用不同的。但你可以使用COUNT_BIG(*)GROUP BY ,可能:

CREATE VIEW v1
WITH SCHEMABINDING
AS
SELECT ColumnA,ColumnB,COUNT_BIG(*) as Cnt
FROM BaseTable
GROUP BY ColumnA,ColumnB
GO
CREATE UNIQUE CLUSTERED INDEX IX_v1 ON v1 (ColumnA,ColumnB)
GO

而不是 DISTINCT ColumnA,ColumnB

<小时/>

创建索引 View 的大多数规则似乎都与维护索引的效率有关。假设您有一个包含以下内容的基表:

ID        ColumnA        ColumnB
1 abc def
2 abc def
3 ghi jkl

并且您允许完全创建基于distinct的 View 。现在,您删除带有 ID 2 的行从表中。 SQL Server 是否应该删除行 abc,def从 View 的索引?只能通过再次扫描整个基表才能找到。

将其与我上面的 View 定义进行对比。 View 数据如下所示:

ColumnA      ColumnB        Cnt
abc def 2
abc def 1

如果删除 ID 2 的行从基表中,SQL Server 可以从 Cnt 中减去 1行的列 abc,def 。如果该列的新值为 0 ,它知道应该从索引中删除该行。相反,如果值为 >0 ,那么它就知道基表中仍然存在该值的行。

关于sql-server-2005 - 如何在 sql 2005 中使用 select unique 语句创建索引 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12419330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com