我有一个sql本地和生产服务器上的长度相同。当我在本地测试sql时,运行大约需要2秒,当我在生产或服务器上运行相同的东西时,运行大约需要7秒。
为什么这么大的差异?
答案 0 :(得分:0)
负责SQL响应时间变化的主要因素(特别是连续几次运行相同的查询时)是缓存。实际上,同时可能会有几种缓存效果:
您可以通过启用自动跟踪并分析其输出来确定究竟发生了什么。如果你第一次看到很多递归调用,而后面没有(或者更少),它会告诉你代码缓存(游标共享阻止你每次解析)。如果你第一次看到很多物理读取,但后来看起来要少得多,那么它就是数据库缓冲区缓存。如果物理读取的数量保持不变,但经过的时间发生变化,那么它可能是低级数据缓存(操作系统或硬件)。
当然,还有其他因素可能影响已用时间 - 例如数据库工作量 - 但如果您在短时间内观察到这一点,则可能不是它们。
答案 1 :(得分:0)
还有两种方法可以解决这个问题,你要做的是通过缓存表运行proc会使它更快,或者只是将其编入索引