目录
性能提示 1:设置NOCOUNT ON
存储过程性能提示 2——使用完全限定名称
性能提示 3——避免使用sp_前缀
性能提示 4 ——避免使用游标
性能提示 5——减少事务范围
结论
在这篇文章中,我们将深入探讨一些可用于加速存储过程的超级简单技巧。
知道如何优化存储过程很重要,所以坚持下去,我将展示您今天可以使用的前五个存储过程性能技巧。
让我们深入研究一些可以用来加速存储过程的超级简单技巧。在开始之前,让我指出,我将向您展示的技巧是特定于存储过程的。
除了这些技巧之外,您还想了解如何优化存储过程中的查询,但这是一个完全不同的主题,所以让我们开始吧。
性能提示 1:设置NOCOUNT ON我想谈的第一件事是,您可以实现的第一个简单的存储过程性能技巧是将命令SET NOCOUNT ON包含在您的存储过程中。它所做的就是停止发送那些消息,这些消息说这个命令影响了5行,这个命令影响了6行……
如果您有一个执行大量查询或更新的存储过程,并且在运行该命令时您会看到很多消息,那么这将减少大量的网络流量。
如果您考虑一个应用程序多次调用存储过程,这真的可以加上。所以使用SET NOCOUNT ON。
此外,您要做的是使用其完全限定名称调用您的存储过程。那我是什么意思?
存储过程性能提示 2——使用完全限定名称您的存储过程按模式排序。如果您根本不做任何事情,它就会存储在dbo模式中。由于不完全限定名称,搜索然后执行存储过程需要更长的时间。
要执行根据最佳实践命名的EmployeeLoad存储过程,请使用以下命令:
EXEC dbo.EmployeeLoad
不要使用EXEC EmployeeLoad。为什么?因为不包括架构,SQL搜索所有数据库对象以查找要运行的存储过程变得更加困难。
性能提示 3——避免使用sp_前缀此外,当我们讨论命名存储过程的主题时,不要以sp_。
我想人们会想,“哦,这真的很酷。我可以直接使用sp_,因为它代表存储过程。”
实际上,它是一个微软保留词,如果你使用这个前缀,会发生的是每次你运行存储过程,数据库在到你的数据库查找存储过程之前,就开始查找主数据库和其他一些数据库。您只是在搜索方式中添加更多内容以查找存储过程是否存在。
更好的是,为什么不直接命名没有前缀的存储过程。所以过去的老派做法是,“哦,我必须保存我的存储过程uspEmployeeLoad,这样每个人都知道它是一个存储过程。
好吧,我们知道它是一个存储过程,您可以在字典中查找,或者您的工具在存储过程下显示它。不需要加前缀。就叫吧EmployeeLoad。这是学校里很酷的做法。
性能提示 4 ——避免使用游标下一个存储过程性能提示是尽可能在游标上使用基于集合的查询。。我的意思是,不要使用游标遍历行,当我还没有到达记录集的末尾时,就去到下一行做一些事情,保留这个值,等等……
使用窗口函数是因为窗口函数很重要,您可以使用窗口函数来获取上一条记录、结果集中的一行或结果集中的下一条记录。你可以用它们做运行平均值,用窗口函数做各种各样的事情。
而且您会发现,您最初使用游标的许多原因现在可以通过使用Window函数或递归CTE(如递归公用表表达式)来替换。
不过,这个想法是尝试远离游标,因为它们会一步一步地遍历记录集,直到它到达末尾,而且速度非常慢。所以不要使用那些。
性能提示 5——减少事务范围此外,您要查看的一件事是减少事务范围。显然,当我们处理存储过程时,有时需要更新多个表,这就是事务派上用场的地方,因为我可以确保在此操作期间,只有当两个表都成功更新时,才会结束操作。很好地用于事务,但不要在这些语句之间放置一大堆其他垃圾或将其添加到该事务中。
就像,“哦,让我们去查找其他东西或运行查询”,因为当事务运行时,它是锁定的。持有锁的时间越长,发生死锁的机会就越大。
死锁基本上就像,我正在尝试锁定您已锁定的记录,而您正在尝试锁定我已锁定的记录。因此,我们进入了这个致命的拥抱,我们基本上都停下来,因为我们被卡住了。我在等你,你也在等我,我们都不能停下来,因为我们每个人都在使用我们每个人都需要的资源。所以死锁很糟糕。
如果您可以减少您在系统中实际锁定事物的时间,那么您可以减少死锁,减少锁定时间的一个好方法就是确保当您执行您进入的事务时,执行交易并退出。不要在里面放很多绒毛。
结论所以这些是我的建议。他们真的很快。他们真的很容易。我希望您可以开始实现它们。其中一些是快速命令。有些更富有哲理。没有这个例子。这只是为了让你们思考我可能会在后面做一些例子,但这只是为了让你们开始准备下一步要做什么。
本文最初发布于Top 5 Stored Procedure Performance Tips You Can Use - Essential SQL
https://www.codeproject.com/Articles/5326830/Top-5-Stored-Procedure-Performance-Tips-You-Can-Us