读书人

视图创建索引的有关问题报错

发布时间: 2012-03-25 20:55:17 作者: rapoo

视图创建索引的问题,报错
CREATE VIEW vFiles WITH SCHEMABINDING
AS
SELECT 2 AS SourceTypeId, FileId
FROM dbo.ExcelFile
UNION
SELECT 1 AS SourceTypeId, FileId
FROM dbo.TextFile
GO

CREATE UNIQUE CLUSTERED INDEX ix_vFiles_FileId
ON dbo.vFiles
(
FileId
)
GO
Server: Msg 1936, Level 16, State 1, Line 1
Cannot index the view 'MyData.dbo.vFiles '. It contains one or more disallowed constructs.

[解决办法]
应该是有重复值
[解决办法]
视图合集必须要有唯一值那可以建索引
[解决办法]
视图索引创建要求:
视图中的 SELECT 语句不能包含下列 Transact-SQL 语法元素:
选择列表不能使用 * 或 table_name.* 语法指定列。必须显式给出列名。


不能在多个视图列中指定用作简单表达式的表的列名。如果对列的所有(或只有一个例外)引用是复杂表达式的一部分或是函数的一个参数,则可多次引用该列。例如,下列选择列表是非法的:
SELECT ColumnA, ColumnB, ColumnA

下列选择列表是合法的:

SELECT ColumnA, AVG(ColumnA), ColumnA + Column B AS AddColAColB

SELECT SUM(ColumnA), ColumnA % ColumnB AS ModuloColAColB

派生表。


行集函数。


UNION 运算符。


子查询。


外联接或自联接。


TOP 子句。


ORDER BY 子句。


DISTINCT 关键字。


COUNT(*)(允许 COUNT_BIG(*)。)


AVG、MAX、MIN、STDEV、STDEVP、VAR 或 VARP 聚合函数。如果在引用索引视图的查询中指定 AVG、MAX、MIN、STDEV、STDEVP、VAR 或 VARP,如果视图选择列表包含以下替换函数,则优化器会经常计算需要的结果。

读书人网 >SQL Server

热点推荐