本地和生产上的相同长度的Sql

时间:2013-08-03 00:23:36

标签: sql sql-server

我有一个sql本地和生产服务器上的长度相同。当我在本地测试sql时,运行大约需要2秒,当我在生产或服务器上运行相同的东西时,运行大约需要7秒。

为什么这么大的差异?

2 个答案:

答案 0 :(得分:0)

负责SQL响应时间变化的主要因素(特别是连续几次运行相同的查询时)是缓存。实际上,同时可能会有几种缓存效果:

  1. 代码缓存(下次发出相同的查询时,您无需进行硬解析 - 节省时间和资源)
  2. 数据缓存,首先是 a)数据库级缓存(使用缓冲区缓存)
    而且
    b)操作系统级缓存
    甚至是 c)硬件级缓存

  3. 您可以通过启用自动跟踪并分析其输出来确定究竟发生了什么。如果你第一次看到很多递归调用,而后面没有(或者更少),它会告诉你代码缓存(游标共享阻止你每次解析)。如果你第一次看到很多物理读取,但后来看起来要少得多,那么它就是数据库缓冲区缓存。如果物理读取的数量保持不变,但经过的时间发生变化,那么它可能是低级数据缓存(操作系统或硬件)。

    当然,还有其他因素可能影响已用时间 - 例如数据库工作量 - 但如果您在短时间内观察到这一点,则可能不是它们。

答案 1 :(得分:0)

还有两种方法可以解决这个问题,你要做的是通过缓存表运行proc会使它更快,或者只是将其编入索引