最近在我的日常工作中被告知有关存储过程的任何注释都不能存在于存储过程中,而是必须使用扩展属性。
过去我们使用过类似的东西。
/*
* NOTE: Auto-Generated Procedure DO NOT MODIFY
*/
CREATE PROCEDURE dbo.MyProc
AS
SELECT *
FROM MyTable
GO
这样,只要有人在SSMS中打开过程,他们就会看到该注释,其他注释也存在于记录我们过程的过程中。现在我还没有发现任何性能/内存问题。但是我们有个人坚持这样做。
我无法找到任何文档证明或否认此类评论存在性能和/或内存问题。
所以我的问题是,有没有人知道任何可以证明或否认这一点的文件?
答案 0 :(得分:18)
它会减慢存储过程的编译速度,但这不应该经常发生。
基本上这听起来像吓唬人。考虑到有用的评论(适度),我会要求证据这些评论会影响绩效。这听起来像是一个荒谬的政策。
(任何时候有人对性能做出声明都需要证据是一个很好的一般规则 - 特别如果他们建议你为了假设的性能增益而牺牲可读性或其他一些正面属性。 )
答案 1 :(得分:5)
文本(包括注释)存储在SQL 2005+的sys.sql_modules中。所以它增加了系统表的大小。
在编译以生成计划时,注释将被忽略:它们是注释。就像任何合理的语言一样......?
但是,在某些情况下debug comments显然仍然可以解析并影响事物。
这是我前一段时间看到的,但却驳回了它(并为此答案进行了搜索)。