Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何为包含联合的视图编制索引_Sql_Sql Server - Fatal编程技术网

Sql 如何为包含联合的视图编制索引

Sql 如何为包含联合的视图编制索引,sql,sql-server,Sql,Sql Server,您好,我想在视图上创建索引,但我的视图使用联合。请参见示例 SELECT t_1.RiskID, t_1.HRASnapshotId, t_1.RiskDate, t_1.RiskTypeDescription, t_1.AgillicUserId, t_1.SequenceNo, t_1.RiskValue, t_1.RiskLe

您好,我想在视图上创建索引,但我的视图使用联合。请参见示例

SELECT     t_1.RiskID,
           t_1.HRASnapshotId,
           t_1.RiskDate, 
           t_1.RiskTypeDescription,
           t_1.AgillicUserId,
           t_1.SequenceNo, 
           t_1.RiskValue,
           t_1.RiskLevelDescription,
           t_1.OrganisationID
FROM       dbo.BE_Risks_Sequenced AS t
INNER JOIN dbo.BE_Risks_Sequenced AS t_1 ON 
           t.RiskTypeDescription = t_1.RiskTypeDescription 
           AND t.AgillicUserId = t_1.AgillicUserId 
           AND t.SequenceNo = t_1.SequenceNo + 1
WHERE     (t.RiskValue = 1) 
  AND     (t.RiskLevelDescription NOT LIKE t_1.RiskLevelDescription)

UNION ALL

SELECT     RiskID, HRASnapshotId, RiskDate, RiskTypeDescription, AgillicUserId, 
           SequenceNo, RiskValue, RiskLevelDescription, OrganisationID
FROM       dbo.BE_Risks_Sequenced
WHERE      (SequenceNo = 1) AND (RiskValue > 1)
ORDER BY   riskid asc

你无法愚弄服务器。对索引视图的限制将阻止联合,无论您如何称呼它。您的第一个查询中还有一个自连接,这将成为另一个障碍

两个可行的备选方案:

1) 将查询输出的副本存储在非规范化表中,并使用触发器对其进行同步。这很混乱,资源效率低下,但在报告/分析方面可以表现良好


2) 创建一些可以索引的更简单的中间视图,并通过具有自联接和并集的更复杂的未索引视图访问它们。如有必要,请使用(NOEXPAND)之类的表提示。

您能否给我一个示例,说明如何将视图更改为可以索引的更简单的中间视图?