标签: indexed-view

在 SQL Server 中,我什么时候应该使用索引视图而不是真正的表?

我知道在 SQL Server 中,您可以在视图上创建索引,然后视图保存基础表中的数据。然后就可以查询视图了。但是,为什么我需要使用视图而不是表格?

sql-server indexed-view

4
推荐指数
1
解决办法
3291
查看次数

Sql Server 2005错误中的索引视图

我试图在Sql Server 2005中的视图上添加一个索引,我得到了这个错误:"无法在视图上创建索引'AllAssignmentNotes'因为视图不是模式绑定的."

我不想在这里提供太多信息,因为它可能超载.只是想知道是否有人可以给我一些帮助.

我去了错误给我的网址,让我无处可去.完整错误如下.

我知道你不能给出真正的答案,因为我没有给你所有的信息,我的道歉.

TITLE: Microsoft SQL Server Management Studio
------------------------------

Create failed for Index 'IX_AssignmentId'.  (Microsoft.SqlServer.Smo)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.4035.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Create+Index&LinkId=20476

------------------------------
ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

------------------------------

Cannot create index on view 'AllAssignmentNotes' because the view is not schema bound. (Microsoft SQL Server, Error: 1939)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4035&EvtSrc=MSSQLServer&EvtID=1939&LinkId=20476

------------------------------
BUTTONS:

OK
------------------------------

sql-server sql-server-2005 indexed-view

3
推荐指数
1
解决办法
4808
查看次数

向视图添加索引时出错

我使用以下代码创建了一个视图

CREATE VIEW dbo.two_weeks_performance WITH SCHEMABINDING
AS 
  SELECT dbo.day_dim.date_time AS Date, 
         dbo.order_dim.quantity AS Target_Acheived
    FROM dbo.day_dim 
    JOIN dbo.order_fact ON dbo.day_dim.day_id = dbo.order_fact.day_id 
    JOIN dbo.branch_dim ON dbo.order_fact.branch_id = dbo.branch_dim.branch_id 
    JOIN dbo.order_dim ON dbo.order_fact.order_id = dbo.order_dim.order_id   
GROUP BY dbo.order_dim.quantity, dbo.day_dim.date_time` 
Run Code Online (Sandbox Code Playgroud)

现在我用的时候:

CREATE UNIQUE CLUSTERED INDEX two_weeks_performance_I ON two_weeks_performance (Date)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

无法创建索引,因为其选择列表未使用正确的COUNT_BIG()用法.考虑将COUNT_BIG(*)添加到选择中.

请帮我解决这个问题.

sql t-sql sql-server indexed-view

3
推荐指数
1
解决办法
1601
查看次数

SQL Server 2005索引筛选器功能

有人告诉我,SQL Server 2005中有一个名为索引过滤器的新功能.

我想要做的是向列添加索引并使索引忽略空值.

我找不到关于此功能的好信息(可能是我的来源有误).有人可以提供有关此功能的其他信息吗?

sql-server indexing indexed-view

2
推荐指数
2
解决办法
4746
查看次数

索引SQL Server上的rowversion/timestamp列的后果

与我之前关于没有临时孔的序列(保证读者可见的数字总是递增)的问题相关,请在此处输入链接描述,我想问一下我设计的解决方案是否有意义.

我创建了一个带有rowversion列的表.如果我理解正确,SQL Server保证值将始终递增.因为这只是一堆字节,所以查询WHERE RowVer > 1567会需要强制转换,因此会导致表扫描.

所以我创建了一个索引视图来执行转换,我正在查询视图.它在表面上运行(查询计划显示索引查找)但是我不确定如果我浏览索引,总是递增的保证是否仍然成立.请帮忙.

编辑
它似乎在调试时工作正常,但插入到我的表块阻止任何选择.需要调查正在持有哪种锁.

sql-server timestamp rowversion indexed-view

2
推荐指数
1
解决办法
1652
查看次数

SQL Server索引视图错误

我意识到这是一个非常人为的例子,但我已将完整版简化为以下版本,以说明问题:

CREATE VIEW model.Appointments_Partition1
WITH SCHEMABINDING AS
  SELECT CONVERT(varchar(15), AppointmentId) as Id, 
         ap.AppTypeId as AppointmentTypeId, 
         ap.Duration as DurationMinutes, 
         ap.AppointmentId as EncounterId, 
         COUNT_BIG(*) as __count_big
    FROM dbo.Appointments ap 
    JOIN dbo.PracticeCodeTable pct ON SUBSTRING(pct.Code, 1, 1) = ap.ScheduleStatus 
                                  AND pct.ReferenceType = 'AppointmentStatus' 
   WHERE ap.AppTime > 0
GROUP BY CONVERT(varchar(15), AppointmentId), ap.AppTypeId, ap.Duration, ap.AppointmentId

CREATE UNIQUE CLUSTERED INDEX [IX_Appointments_Partition1_Id]
ON model.Appointments_Partition1 ([Id]);
Run Code Online (Sandbox Code Playgroud)

我明白了:

消息8668,级别16,状态0,行12
无法在视图'PracticeRepository.model.Appointments_Partition1'上创建聚簇索引'IX_Appointments_Partition1_Id',因为视图的选择列表包含有关聚合函数或分组列结果的表达式.考虑从聚合函数的结果中删除表达式或从选择列表中分组列.

我包括count_big ...那么为什么这个组出现问题?....我该如何解决这个错误?

sql-server sql-server-2005 indexed-view

1
推荐指数
1
解决办法
1178
查看次数

SQL Server索引视图列精度

我正在尝试创建索引视图,并在创建索引时遇到以下错误:

无法在视图....'上创建索引,因为WHERE或GROUP BY子句中视图引用的列'Amount'不精确。考虑从视图中删除该列,或者精确地更改该列。

有问题的列的数据类型是real我想出现的问题?

解决这个问题的合适方法是什么?我可以在视图SQL中进行转换以消除“不精确性”吗?

视图SQL在下面指定:

EXEC('
   CREATE VIEW model.ReceivableBillableParties
   WITH SCHEMABINDING
   AS
      SELECT pf.Id AS Id
         , pf.InsuranceId AS InsuranceId
         , pf.FinancialInsType AS InsuranceType
         , pr.ReceivableId
      FROM dbo.Receivables pr
      INNER JOIN dbo.Demographics pd ON pd.PersonId = pr.PersonId
      INNER JOIN dbo.Appointments ap ON ap.AppointmentId = pr.AppointmentId
      INNER JOIN dbo.Financiasl pf ON pf.PersonId = pf.PersonId
      INNER JOIN dbo.PracticeInsurers pri ON pri.InsurerId = pf.FinancialInsurerId
      WHERE pri.Amount = 0
')

EXEC('
   CREATE UNIQUE CLUSTERED INDEX [IX_ReceivableBillableParties]
   ON model.ReceivableBillableParties ([Id]);
')
Run Code Online (Sandbox Code Playgroud)

sql-server indexing sql-server-2005 indexed-view

1
推荐指数
1
解决办法
2571
查看次数

是否可以从Sql Server 2008中的Xml Data创建索引视图?

我从2005年的文档中看到,您无法从Xml列创建索引视图.

这可能在2008年或2008年2月?我找不到任何文档说这是添加的东西,但我正在寻找确认,而且我目前还没有方便地访问2008环境.

编辑

我背后的动机是,Xml的数量正在增长到SSRS报告来自Xml的聚合数据变慢的程度.

xml sql-server indexed-view

0
推荐指数
1
解决办法
1724
查看次数