2009-04-09 128 views
3

我有一个查询在生产中运行约2-4分钟,但在开发时运行几秒钟。这两个数据库都位于同一台服务器上。 (没有关于开发和生产的讲座,生产仍在开发中)。SQL Server 2008查询生产速度慢,但开发速度很快

我的意思是,我可以打开两个查询窗口,并一致地得到两个不同的结果。我运行了RedGate SQLCompare,并且没有模式差异(索引等)差异。我禁用了连接到数据库的站点,所以除了我的Management Studio会话之外,应该没有任何连接。

这可能是什么原因造成的?我通过复制生产数据库创建开发数据库(在Management Studio中,右键单击数据库并单击“复制数据库”)

这真的很奇怪。我不想做任何索引更改,因为奇怪的是副本快速发布,但制作非常非常缓慢,但应该基本上是完全相同的副本。

回答

7

我不知道SQLServer细节,但通常这种事情是由于两个数据库中的表统计不同。查看查询计划以查看它们是否不同。 运行SQL Server版本的“分析表”或“分析模式”命令。

如果这些东西没有帮助,请检查数据库的设置方式。数据是否可能相同,但服务器配置是不同的,例如,生产版本的可用内存阈值要低得多?

还有其他东西要检查 - 这只是我显示我的无知 - 但是“复制数据库”实际上是复制数据还是只是对象定义?

+1

是的,统计是第一个看的地方。你可以运行EXEC sp_updatestats作为一种火焰喷射器,看看它是否有任何初步改进。 否则,SquareCog是正确的:寻找配置问题(特别是在驱动器/磁盘)。 – 2009-04-10 15:09:42

+0

非常感谢你对EXEC sp_updatestats的评论 - 这完全解决了我的问题。我怀疑索引没有被使用,因为它们已经过时了,尽管重新创建了它们! – jocull 2013-11-01 17:23:32

0

尝试运行SQL分析器以查看生产中运行的是什么。

1

您不提供任何有关数据库结构或SQL查询的详细信息,但如果您确信这两个环境的设置是相同的,那么它可能只是生产数据库中的数据突出显示无效查询。

0

默认情况下,红色大门会忽略统计信息和诸如填充因子等内容。

1

好的,谢谢大家。我认为这个问题与索引碎片有关。我认为复制数据库基本上只是复制文件。我在每张桌上都做了DBCC DBREINDEX,现在效果很好。感谢大家!

1

在我的情况下,原来是因为生产数据库不在现场(不同的城市),开发数据库在建筑物中。咄。该查询返回了大量数据,当然,该数据量在外部网络上需要更长的时间。由于生产数据库比旧的开发盒要快得多,而且我们的大多数查询没有为网络返回足够的数据作为速度因素,所以我只是没有连接点。相反,它的生产框速度非常快,即使网络连接速度较慢,大多数查询的返回速度仍比开发框快。

相关问题