posts - 609,  comments - 13,  views - 64万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

视图可看作一个虚拟表。常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的数据集合。

视图的优点:

1.视图隐藏了底层的表结构,简化了数据访问操作
2.因为隐藏了底层的表结构,所以大大加强了安全性,用户只能看到视图提供的数据
3.使用视图,方便了权限管理,让用户对视图有权限而不是对底层表有权限进一步加强了安全性
4.视图提供了一个用户访问的接口,当底层表改变后,改变视图的语句来进行适应,使已经建立在这个视图上客户端程序不受影响

视图的分类:

普通视图(Regular View)
索引视图(Indexed View)
分割视图(Partitioned View)

 

注意事项:

在View中,除非有TOP关键字,否则不能用Order By子句,将会大大降低效率
View在每个Schema中命名必须独一无二
View嵌套不能超过32层,一般最多嵌套2层,否则会降低效率
Compute,compute by,INTO关键字不允许出现在View中
View不能建立在临时表上
View不能对全文索引进行查询

 

索引视图:

索引视图涉及的基本表必须ANSI_NULLS设置为ON
索引视图必须设置ANSI_NULLS和QUOTED_INDETIFIER为ON
索引视图只能引用基本表
SCHEMABINDING必须设置
定义索引视图时必须使用Schema.ViewName这样的全名
索引视图中不能有子查询
avg,max,min,stdev,stdevp,var,varp这些聚合函数不能用

1
2
3
4
5
6
7
8
9
10
11
12
--建立视图
CREATE VIEW v_Test_IndexedView
WITH SCHEMABINDING
AS
SELECT p.Name,s.OrderQty,s.SalesOrderDetailID
FROM Production.Product p
inner join Sales.SalesOrderDetail s
ON p.ProductID=s.ProductID
GO
--在视图上建立索引
CREATE UNIQUE CLUSTERED INDEX indexedview_test1
ON v_Test_IndexedView(SalesOrderDetailID)<br>go<br><br>

--执行sql查询

SELECT p.Name,s.OrderQty
FROM Production.Product p
inner join Sales.SalesOrderDetail s
ON p.ProductID=s.ProductID

 

posted on   邢帅杰  阅读(236)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示