如题,在创建视图一节明确规定视图上不能创建索引,可是索引视图又该怎么解释呢?请教各位。

解决方案 »

  1.   

    MSSQL ?
    请贴出原文出处。
      

  2.   

    是可以的。SQL有明确的说明 是可以的
      

  3.   

    一个标准视图转换为一个索引视图必须遵守以下规则:
    A.视图必须使用With Schemabinding选项来创建;
          如果创建视图时没有with Schemabinding,试图创建视图时就会报错:……因为该视图未绑定到架构
    B.在这个视图中不能使用其他视图、导出表、行集函数或自查询,也就是说只能使用表;
    C.视图所用到的基本表必须和视图属于同一个所有者;
    D.视图只能链接同一个数据库中的表;
    E.视图不能包含一个外部链接或自链接,也就是说在链接表时只能使用INNER JOIN并且INNER JOIN前后不能使同一个表,不能使用LEFT(RIGHT) JOIN 或者 LEFT (RIGHT) OUTER JOIN ;
    F. 视图不能包含UNION子句、TOP子句、ORDER BY子句、Having子句、Rollup子句、Cube子句、compute子句、Compute By子句或Distinct关键字;
    G. 视图不允许使用某些集合函数,如:Count(*)可以使用count_big(*)代替、avg()、max()、min()、stdev()、stdevp()、var()或varp()等;
    H. 视图不能使用Select * 这样的语句,也就是说视图的所有字段都必须显示指定;
    I. 视图不能包含Text、ntext、image类型的列;
    J. 如果视图包含一个Group By子句,那么他必须在Select列中包含count_big(*);
    K. 视图中的所有标和用户自定义的函数都必须使用两段式名来引用,即所有者.表或函数名称;
    L. 所有的基本表和视图都必须使用 Set Ansi_Nulls On 创建;
    M. 在创建索引时或创建索引后执行IUD时,必须显示或隐式地执行:
            Set ANSI_NULLS ON
            SET ANSI_PADDING ON
            SET ANSI_WARNINGS ON
            SET ARITHABORT ON
            SET CONCAT_NULL_YIELDS_NULL ON
            SET QUOTED_IDENTIFIER ON
            SET NUMERIC_ROUNDABORT OFF
            各个选项的有关信息或意义,可以查阅SQL Server的联机丛书,这里就不再介绍了;
    N. 索引视图只有在SQL Server2000的企业版或开发版或者更高的版本中才能创建。