我有一个查询,在生产上运行大约2-4分钟,但在开发时运行几秒钟。这两个数据库位于完全相同的服务器上。(没有关于开发和生产的讲座,生产实际上还在开发中)。
我的意思是,我可以只打开两个查询窗口,并得到两个不同的结果一致。我已经运行了RedGate SQLCompare,没有模式差异(索引等)差异。我禁用了连接到数据库的站点,因此除了Management Studio会话之外,不应该有其他连接。
这可能是什么原因造成的?我通过复制生产数据库来创建开发数据库(在Management Studio中,右键单击数据库,然后单击“复制数据库”)
这真的很奇怪。我不想做任何索引更改,因为奇怪的是,复制速度很快,但生产非常非常慢,但本质上应该是完全相同的副本。
发布于 2009-04-09 04:51:01
我不知道SQLServer的细节,但通常这种情况是由于两个数据库中的表统计数据不同造成的。查看查询计划,看看它们是否不同。运行SQLServer版本的"analyze table“或"analyze schema”命令。
如果这些都不起作用,请检查数据库是如何设置的。有没有可能数据是相同的,但服务器配置不同,例如,生产版本的可用内存阈值要低得多?
还有一些需要检查的东西--这只是我的无知--但是“复制数据库”实际上是复制了数据,还是仅仅复制了对象定义?
发布于 2009-04-09 04:50:15
您没有提供有关DB结构或SQL查询的任何细节,但是如果您确信这两个环境的设置是相同的,那么可能只是因为生产数据库中的大量数据突出显示了一个低效查询。
发布于 2009-04-09 18:07:44
好的,谢谢大家。我认为这个问题与索引碎片有关。我以为复制数据库基本上只是复制了文件。我做了一个DBCC DBREINDEX在每一张桌子上,它现在工作得很好。谢谢大家!
https://stackoverflow.com/questions/732815
复制相似问题