视图快还是表快?

xiaosongaspnet 2011-04-23 12:21:04
有个视图tableAview
内容
Select * From tableA



Select * from tableAview 快 还是 select * from tableA 快?
tableA 我建了几个索引,数据量大概是10000000(1千万)? 希望高手指点

...全文
699 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
napier 2011-04-24
  • 打赏
  • 举报
回复
如果是从一个表来获取数据,那么直接从表中来获取,视图的优势在于多表操作。
  • 打赏
  • 举报
回复
xiaosongaspnet 2011-04-23
  • 打赏
  • 举报
回复

Select * From tableAview A
inner join Table C on A.type = C.Type


Select * From tableA A
inner join Table C on A.type = C.Type

Type 是索引,有索引不是快了吗? 感觉视图的索引没有效果了,是不是这样?
dearbinge 2011-04-23
  • 打赏
  • 举报
回复
视图会减少解析SQL语句的时间.
crazy_boom 2011-04-23
  • 打赏
  • 举报
回复
如果仅从但表中取数据 就是直接从表中读取了。

视图的优点与缺点

在程序设计的时候必须先了解视图的优缺点,这样可以扬长避短,视图具有如下的一些优点:

● 简单性。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件。

● 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上。

● 逻辑数据独立性。视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

视图也存在一些缺点,主要如下。

● 性能:SQL Server必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQL Server也把它变成一个复杂的结合体,需要花费一定的时间。

● 修改限制:当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本表的某些行的修改。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的。

所以,在定义数据库对象时,不能不加选择地来定义视图,应该权衡视图的优点和缺点,合理地定义视图。
serapn123 2011-04-23
  • 打赏
  • 举报
回复
感觉因该是看数据量吧,SQL会把表数据创建成视图,然后从视图中查询。
表创建为视图会造成额外开销。

数据量不大的时候是差不多,中等的表会快一些,大量的话,我觉得还是用视图。

其实你可以用SQL自带的工具来计算查询使用的时间来决定用哪一个。

以上只是我的一点浅显认知,仅仅做参考,如有错误,谢谢指出。
--小F-- 2011-04-23
  • 打赏
  • 举报
回复
索引就够了 视图会带来开销
Shawn 2011-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dearbinge 的回复:]
视图会减少解析SQL语句的时间.
[/Quote]
select * from 视图 也需要时间呃,呵呵
直接用表吧,没有必要用视图的地方,就不用视图好了。
gw6328 2011-04-23
  • 打赏
  • 举报
回复
表应该要快些吧。视图也要访问表
xiaosongaspnet 2011-04-23
  • 打赏
  • 举报
回复
没人回答 就结贴了
xiaosongaspnet 2011-04-23
  • 打赏
  • 举报
回复
星期六加班 各位大哥求助下

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧