SQL SERVER视图对查询效率的提高
创始人
2024-07-17 15:30:50
0

SQL SERVER视图不仅可以实现许多我们需要的功能,而且对于SQL SERVER查询效率的提高也有帮助,下面一起来了解一下。

有两张数据表:A和B,其中A的记录为2万条左右,而B中的数据为200万条以上,现在要求以a.id=b.id为关联进行数据筛选。

为此要求,我做了个SQL SERVER视图View1,将a.id与b.id关联起来,运行该视图的查询,使用了2秒中就得到结果了。

这时又有一特殊需求:编写存储过程,该存储过程中有一个游标的循环,该循环重复1万次,在每次循环中都使用了对View1的查询。

举例如下:

循环游标体(重复1万次)

{ select @text=text from view1 whereid=@id
--其中@text,@id均为变量update form1 set text=@text where id=@id}

执行以上的存储过程,发现竟然要花费>7分钟的运算时间,进行分析后得知效率全损耗在对view1视图的扫描上,尽管单独对该视图进行查询只需2秒,但在这种情况下即需要太多的时间。

因此改进该存储过程如下:

create table #tempTab( id nvarchar(20), text nvarchar(20))

查询View1视图,将记录插入到#tempTab临时表中... 循环游标体(重复1万次)

{ select @text=text from #tempTab whereid=@id
--其中@text,@id均为变量update form1 set text=@text where id=@id}

别小瞧以上的改动,此时该存储过程只花费50秒的时间。 对于上述现象,分析如下:在多次循环对某个视图进行查询时,将会耗费大量的时间,因此将该视图的数据放在内存中进行计算会在很大程度上提高速度。
 

 

 

【编辑推荐】

sql server表格变量的用法

SQL Server变量赋值的方法

Java调用Sql Server存储过程

SQL Server创建视图的语法

SQL Server排序规则的应用

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...