SQL索引视图的效率怎样?
问一下。查阅资料发现SQL视图无法提高查询的效率,是因为它只表示一个SELECT语句并不储存结果集。而我又看到索引视图可以提高查询效率,是因为索引视图可以存储结果集(这句话对吗?)
请教一下索引视图的原理是什么?为什么能提高查询效率?
还有,临时表是建立在内存中的吗?我在网上看到有这样的说法
我的程序中,我想要这样一种效果,我想用指定复杂查询语句生成一个临时表。这个表能像视图那样,自身储存有一个查询语句。但是它又像一个临时表——它的结果集可以以我设定的一段时间在本地缓存起来,而不只是一个句子。我还希望这个表能根据自身的timeout来自动重建
请问SQL中有类似这样的功能吗?还是我只能手动实现?
[解决办法]
---索引视图
索引视图是具体化的视图
--创建索引视图
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
*
from
dbo.a join dbo.b
on
a.id=b.id
go
2.在创建索引视图的select语句时,不使用*,必须指定具体的列名
--错误写法
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
---正确写法
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
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fredrickhu/archive/2010/01/12/5183068.aspx