在存储过程中用视图更新数据快,还是用sql语句快?

cnwhm 2003-08-21 04:22:04
在一个上万条数据的表中,为了统计某单位下各个产品当天的月产和年产,我是在存储过程中动态创建视图来进行计算的,这样的方案可不可取?它的效率比起不用视图直接用sql语句进行统计,哪一个更快?统计月产和年产的逻辑见今天的贴子:这个存储过程还可不可以优化?

  这个问题都困扰了我一天了。各位大侠帮帮小弟吧!
  
icq:246509796
...全文
143 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnwhm 2003-08-21
  • 打赏
  • 举报
回复
谢谢大力和诸位高手!结贴!
pengdali 2003-08-21
  • 打赏
  • 举报
回复
而用临时表的话,更改的只是临时表的数据,而表中的数据还要用sql语句去更新一下,临时表与源表是没有关系的。我的理解对不?

对,你可以重临时表里取id,去更新实际表里的数据。
cnwhm 2003-08-21
  • 打赏
  • 举报
回复
还有个问题要请教一下,用视图的话,当对视图操作时,视图所映射的表的字段会自动更新,而用临时表的话,更改的只是临时表的数据,而表中的数据还要用sql语句去更新一下,临时表与源表是没有关系的。我的理解对不?
pengdali 2003-08-21
  • 打赏
  • 举报
回复
一个复杂select出来的结果集,多次调用,你说那种快

1、先得到一个固定的临时表
比如需要用到5次这个结果集,每次需要的时候只需要简单的从临时表里取就可以了

2、每次都临时select或视图。
比如需要用到5次这个结果集,你的这个结果集够复杂,你5次调用,sqlserver就要执行这个重复的select语句5次。

当然我没仔细看你的语句,不知道你是不是这种情况,具体用什么你要自己把握。
cnwhm 2003-08-21
  • 打赏
  • 举报
回复
好多种说法啊,到底用什么最快?
amtyuranus 2003-08-21
  • 打赏
  • 举报
回复
应该是视图快

不过可能视图不能 得到你要的结果,也可以用临时表来放结果就可以了
pengdali 2003-08-21
  • 打赏
  • 举报
回复
用临时表或表变量来代替你的视图。
fangjm 2003-08-21
  • 打赏
  • 举报
回复
使用SQL SERVER 的视图来处理大数据量的数据时速度常常慢得让人难以忍受,我的观点是能不用他的视图就不用
CrazyFor 2003-08-21
  • 打赏
  • 举报
回复
同样的功能,我相信饶的圈子越少越快,
hjb111 2003-08-21
  • 打赏
  • 举报
回复
动态视图会慢些!你可以在查询分析器中从查询菜单中选择显示执行计划,显示服务器跟踪,显示客户统计三项,执行进行比较!
CrazyFor 2003-08-21
  • 打赏
  • 举报
回复
同样的功能,我相信饶的圈子越少越快,
hjb111 2003-08-21
  • 打赏
  • 举报
回复
动态视图会慢些!你可以在查询分析器中从查询菜单中选择显示执行计划,显示服务器跟踪,显示客户统计三项,执行进行比较!
愉快的登山者 2003-08-21
  • 打赏
  • 举报
回复
要看你的处理逻辑是如何组织了。应该动态视图会慢些。

愉快的登山者


◢◣◢◣◢◣
实验四视图数据控制与嵌入式SQL语言实验 基于实验一建立的“图书读者数据库”(Book_Reader_DB)和实验二输入的部分虚拟数据,在SQL Server 2000查询分析器的Transact-SQL语句输入区输入Transact-SQL语句,然后点击“查询”菜单中的“执行”菜单项(或用F5捷键),执行输入区的Transact-SQL语句。具体实验内容如下: 1、视图定义与查询实验 ① 在“图书读者数据库”(Book_Reader_DB)中,先用视图创建向导的方法创建视图View1和View2。其中View1包括书号、书名、定价、数量等属性。View2包括读者号、读者姓名、单位、电话、书号、书名、借阅日期、应归还日期、实际还书日期和过期天数等属性,其条件是所有借书已过期的读者和借书情况(假定借阅期为60天); ② 根据上述定义的视图,在查询分析器中用语句完成如下查询: A:通过视图View1查询书库中藏书的情况; B:通过视图View2查询借书过期的读者和借书情况及罚款金额(假定超期罚款标准为1元/天); ③ 在查询分析器中用SQL语句来创建视图View3和视图View4,视图View3的要求与View1相同,视图View4与视图View2的条件相同。 2、数据控制实验 ① 假定系统有U1、U2、U3 、U4、U5、U6六个登录用户,试将查询图书表的权限由管理员授权给U1, 以U1用户的身份重新登录系统后,再把权限授予给U2; ② 系统管理员把插入数据给借阅表的权限授予给U3; ③ 系统管理员把添加图书数据的权限授予给U4; ④ 系统管理员把修改读者数据信息的权限授予给U5; ⑤ 将U1访问图书表的权限收回; 3、嵌入式SQL语言实验 ① 用VB建立一个工程,在对话框Form1上添加一些访问数据库和显示数据的控件,并通过ODBC建立与数据库Book_Reader_DB的连接; ② 在Form1上添加一个按钮Button1,对Button1添加一个点击事件(双击按钮Button1即可进入源代码输入界面),在事件上添加一些访问数据库中表对象或视图对象的SQL语句,运行工程,即可将满足要求的记录显示在界面的显示数据的控件上。换用不同的SQL语句,检查其执行结果。 上述每项实验内容相应的实验步骤必须进行详细的记录,并将其整理后写在实验报告中。
一、实验目的 1、掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言查询语句的理解。 2、掌握用查询分析器和视图创建向导的方法创建视图。 3、学会使用SQL数据控制语句来进行授权控制和权限回收。 4、了解高级语言中用SQL语句来连接和访问数据库的方法 二、实验环境: Microsoft Windows 2000操作系统,Microsoft SQL Server 2000数据库管理系统标准版或企业版,Visual Basic 6.0开发工具。 三、实验内容、步骤、结果和实验过程中出现的问题: 1>内容: 基于实验一建立的“图书读者数据库”(Book_Reader_DB)和实验二输入的部分虚拟数据,在SQL Server 2000查询分析器的Transact-SQL语句输入区输入Transact-SQL语句,然后点击“查询”菜单中的“执行”菜单项(或用F5捷键),执行输入区的Transact-SQL语句。具体实验内容如下: 1、视图定义与查询实验 ① 在“图书读者数据库”(Book_Reader_DB)中,先用视图创建向导的方法创建视图View1和View2。其中View1包括书号、书名、定价、数量等属性。View2包括读者号、读者姓名、单位、电话、书号、书名、借阅日期、应归还日期、实际还书日期和过期天数等属性,其条件是所有借书已过期的读者和借书情况(假定借阅期为60天); ② 根据上述定义的视图,在查询分析器中用语句完成如下查询: A:通过视图View1查询书库中藏书的情况; B:通过视图View2查询借书过期的读者和借书情况及罚款金额(假定超期罚款标准为1元/天); ③ 在查询分析器中用SQL语句来创建视图View3和视图View4,视图View3的要求与View1相同,视图View4与视图View2的条件相同。 2、数据控制实验 ① 假定系统有U1、U2、U3 、U4、U5、U6六个登录用户,试将查询图书表的权限由管理员授权给U1, 以U1用户的身份重新登录系统后,再把权限授予给U2; ② 系统管理员把插入数据给借阅表的权限授予给U3; ③ 系统管理员把添加图书数据的权限授予给U4; ④ 系统管理员把修改读者数据信息的权限授予给U5; ⑤ 将U1访问图书表的权限收回; 3、嵌入式SQL语言实验 ① 用VB建立一个工程,在对话框Form1上添加一些访问数据库和显示数据的控件,并通过ODBC建立与数据库Book_Reader_DB的连接; ② 在Form1上添加一个按钮Button1,对Button1添加一个点击事件(双击按钮Button1即可进入源代码输入界面),在事件上添加一些访问数据库中表对象或视图对象的SQL语句,运行工程,即可将满足要求的记录显示在界面的显示数据的控件上。换用不同的SQL语句,检查其执行结果。

34,576

社区成员

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

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