向视图添加索引

Sai*_*udo 4 sql-server-2005 sql-server view materialized-view

我有一个包含 varchar 类型字段中的 XML 数据的表。该字段用于存储来自各种不同 XML 模式的数据,其中一些通过存储在另一个表中的记录相关联。

我最近创建了一些解析 XML 的视图,并且在某些情况下创建了一些值的枢轴。这些视图为我的报告提供了极好的数据,但对性能造成了严重影响。我想知道是否可以通过索引提高性能。

下面是一个视图的例子:

create view StudentHours as
  select
      x.TableRecordId as Id
    , x.RecordXml.value('(/TableRecord/LOGDate)[1]', 'DateTime') as LogDate 
    , x.RecordXml.value('(/TableRecord/LOGHours)[1]', 'float') as Hours
    , x.RecordXml.value('(/TableRecord/LOGApproved)[1]', 'varchar(10)') as Approved
    , y.PKTableRecordId as CourseId
  from
    (select TableRecordId, Cast([Schema] as Xml) as RecordXml 
     from TableRecords where TableSchemaId = 1857) as x
  join TableRecordRelations as y on x.TableRecordId = y.FKTableRecordId
Run Code Online (Sandbox Code Playgroud)

然后,我将在其他执行聚合等操作的视图中使用此视图。

名为 TableRecords 的表在其唯一 id TableRecordId 上有一个索引,TableRecordRelations 在其重要字段上也有索引。

添加一两个索引是否有助于此视图的性能?是否需要更多数据来确定这一点?

Mik*_*son 5

我相信转换到 XML 正在扼杀你的性能,Paul White计算标量、表达式和执行计划性能描述了正在发生的事情

到 XML 的转换推迟到您实际使用 XML 列的位置,因此在您的查询中,对于返回的每一行,转换发生 3 次。

  • [也在这个答案中看到](http://dba.stackexchange.com/a/30947) (2认同)

归档时间:

查看次数:

917 次

最近记录:

12 年,8 月 前