【发布时间】:2013-03-23 19:22:20
【问题描述】:
我在 sybase 中有一个存储过程,第一次运行比之后直接运行花费的时间更多。
在创建这个存储过程时,我使用了with recompile 选项。所以它不应该为存储过程保存任何计划。每次执行过程都会创建新的计划。
为什么存储过程在第二次运行时会运行得更快?
【问题讨论】:
标签: sql performance sybase
我在 sybase 中有一个存储过程,第一次运行比之后直接运行花费的时间更多。
在创建这个存储过程时,我使用了with recompile 选项。所以它不应该为存储过程保存任何计划。每次执行过程都会创建新的计划。
为什么存储过程在第二次运行时会运行得更快?
【问题讨论】:
标签: sql performance sybase
这很可能是因为 sybase 内部缓存。
所以第一次将相关数据存储在缓存中,这就是为什么第二次更快。
您可以与sp_helpcache 联系以查看已配置的内容。
【讨论】:
Procedure cache 和Data cache。你是对的,procedure cache 不会被使用,并且会创建一个新的计划,但是data cache 仍然可以使用,可能是索引或表被第二次缓存了。