无法对视图创建索引,因为该视图未绑定到架构

遇到这个问题,查了一位博主的文章,但是说的不是很详细,在这里说明白一些。

修改此问题 需要在 创建视图语句中加上 with SCHEMABINDING

--创建索引视图 create view 视图名 with schemabinding as select 语句 go

--创建索引视图需要注意的几点

--创建索引视图
create view 视图名 with schemabinding
as
select 语句
go

---创建索引视图需要注意的几点
1. 创建索引视图的时候需要指定表所属的架构
--错误写法
create view v_f with schemabinding
as
select
   a.a,a.b,b.a,b.b
from
   a join b
on
   a.id=b.id
go

---正确写法:
create view v_f with schemabinding
as
select
   a.a,a.b,b.a,b.b
from
   dbo.a join dbo.b
on
   a.id=b.id
go

2.在创建索引视图的select语句时,不使用*,必须指定具体的列名
--错误写法
create view v_f with schemabinding
as
select
   *
from
   dbo.a join dbo.b
on
   a.id=b.id
go

---正确写法
create view v_f with schemabinding
as
select
   a.a,a.b,b.a,b.b
from
   dbo.a join dbo.b
on
   a.id=b.id
go

3.在创建索引视图的select 语句中,不能存在重复的列名,这个不举例了

4. 只能为索引视图创建唯一聚集索引
--正确的写法
create unique clustered index ix_uniquetb on v_tb
go

--错误的写法
create clustered index ix_uniquetb on v_tb
go
时间: 2024-08-25 12:02:42

无法对视图创建索引,因为该视图未绑定到架构的相关文章

物化视图,索引视图,函数索引,创建索引时使用DESC

老板交给的一个任务,搜了一下资料,觉得还是总结一下比较好.假如以后用到了呢?围绕两个主题:一是视图上能够建索引,二是在创建索引时是否可以使用DESC关键字. 一.能否在视图上创建索引 因为普通的视图并没有存储实际的信息,它所操作的数据来自于基本表,所以在普通视图上不可以创建索引. 在oracle中执行如下的语句,会报"视图不适用于此处"的错误 create view test_car as select license from cars; create index index_vew

SQL Server 索引(index) 和 视图(view) 的简单介绍和操作

--索引(index)和视图(view)-- --索引(index)----概述: 数据库中的索引类似于书籍的目录,他以指针形式包含了表中一列或几列组合的新顺序,实现表中数据库的逻辑排序.索引创建在数据表或者视图的字段上,生成索引页,存放于数据库中.--分类:在SQL Server中,根据索引的作用和存储方式的不同,将索引分为聚集索引和非聚集索引两类. 1)聚集索引 :指数据库的物理顺序与被创建索引的字段顺序完全相同.同一个数据表最多只能创建一个聚集索引.默认情况下主键自动被创建为聚集索引.聚集

数据库 day60,61 Oracle入门,单行函数,多表查询,子查询,事物处理,约束,rownum分页,视图,序列,索引

1.    oracle介绍 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一.比如SilverStream就是基于数据库的一种中间件.ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能:作为一个关系数据库,它是一个完备关系的产品:作为分布式数据库它实现了分布式处理功能.但它的所有知识,只要在一种机型上学习

SQL语句-创建索引

  语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因子值0~100GO USE 库名GOIF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引DROP INDEX TEST.IX_TEST_TNAME--如果存在则删除 --创建索引CREATE NONCLUSTERED INDEX IX_TEST_TNAME

Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间

alter table userInfo add(msn varchar2(20));   1.建表 create table userInfo ( id number(6), name varchar2(20), sex number(1), age number(3), birthday date, address varchar2(50), email varchar2(25), tel number(11) );   2.创建约束 不带约束名称的: create table userIn

oracle 物化视图及创建索引

物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询.这样对整体查询性能的提高,并没有实质上的好处. 1.物化视图的类型:ON DEMAND.ON COMMIT 二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性:而ON COMMIT是说,一旦基表有了C

SqlServer在视图上创建索引的条件

在视图上创建索引需要三个条件: 一.视图必须绑定到架构. 要做到这点,在 CREATE VIEW 语句中,必须加上 WITH SCHEMABINDING,如果是使用企业管理器,则在设计界面的空白处点击右键,属性,选中“绑定到架构”. 二.索引必须是唯一索引.  www.2cto.com 要做到这点,在 CREATE INDEX 中必须指定 UNIQUE. 三.索引必须是聚集索引. 要做到这点,在 CREATE INDEX 中必须指定 CLUSTERED. 例: CREATE VIEW viewF

创建索引视图

CREATE VIEW UserInfoView WITH SCHEMABINDING AS SELECT Email,User_ID from dbo.User_Info GO --以邮箱创建一个唯一聚集索引 CREATE UNIQUE CLUSTERED INDEX ix_UserInfo_Email ON UserInfoView (Email); GO 注意:创建索引视图要点: 1: CREATE VIEW memberView后面要跟上WITH SCHEMABINDING 理由:• 使

事务,视图,索引

一.事务 1.什么是事务:事务是一种机制,一个操作序列,它包含一组数据库的操作命令.并把所有命令作为一个整体一起向系统提交或撤销操作请求 ,要么这些数据库操作都执行,要不都不执行.事务是一个不可分割的整体. 2:事务的四种特性:原子性.一致性.隔离性.持久性 3:如何执行事务操作: 1.开始事务:begin transaction 2.提交事务:commit transaction 3.回滚事务:rollback transaction 二.视图 创建视图的语法: create view vie