要不要写视图?

ruir 2003-12-17 09:56:08
做项目时已经写了存储过程,还要不要写视图?
比如我写一个这样的存储过程:
create proc test
@id int
as
select a,b,c from test where id=@id
go
要不要改写成一个存储过程和一个视图?:
create view v1
as
select a,b,c from test
go

create proc test
@id int
select * from v1 where id=@id
go

我上面写的查询只是一个简单的举例,
即:要不要把所有的查询都写成视图,然后再写存储过程select * from 视图 where...
还有一个:
http://expert.csdn.net/Expert/topic/2569/2569867.xml?temp=.6801721
谢谢!
...全文
46 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-12-17
  • 打赏
  • 举报
回复
好像是发布用的数据库.

讨论的结果应该是:能用视图的,就最好是写视图
ruir 2003-12-17
  • 打赏
  • 举报
回复
两者在效率上应该是没有区别的吧?
讨论的结果应该是:最好是写视图。对吧?



临时发现一个问题:
我的数据库里多了一个叫distmodel的数据库,里面只有46各系统表186各系统存储过程3个系统视图。请问这个数据库是怎么来的?

谢谢!!!
zjcxc 元老 2003-12-17
  • 打赏
  • 举报
回复
那看你处理语句的复杂程度才能确定有没有必要写视图.
cloudchen 2003-12-17
  • 打赏
  • 举报
回复
视图方便,过滤记录排序不象sp那样要输入参数,和直接表一样,视图一般都是用在多表相连连接,视图中一般不过滤记录。而是在使用视图的时候进行过滤
ruir 2003-12-17
  • 打赏
  • 举报
回复
这么简单的语句,没必要写存储过程.建议直接建立视图
-------------------------------------------------
to: zjcxc(邹建)
我只是举例,还有复杂的查询等等。
还有添加、修改等
txlicenhe 2003-12-17
  • 打赏
  • 举报
回复
视图可以直接 select * from viewName where ...
存储过程呢?
不能直接调用吧?
改变一下参数,不是要重新写一个?
ruir 2003-12-17
  • 打赏
  • 举报
回复
那视图还有什么存在的意义呢?

不要告诉我它可以隐藏基表、禁止所有用户访问数据库表、将用户限定在表中的特定行上、将用户限定在特定列上、将多个表中的列联接起来,使它们看起来象一个表......

我写了存储过程还不是一样实现一上功能?
zjcxc 元老 2003-12-17
  • 打赏
  • 举报
回复
create view v1
as
select id,a,b,c from test
go

以后直接用:
select * from v1 where id=@id
zjcxc 元老 2003-12-17
  • 打赏
  • 举报
回复
这么简单的语句,没必要写存储过程.建议直接建立视图
txlicenhe 2003-12-17
  • 打赏
  • 举报
回复
象这种,建议只要视图,不要存储过程。
txlicenhe 2003-12-17
  • 打赏
  • 举报
回复
没必要。
当然写的话也没什么影响。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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