这是我需要SQL管理员帮助的地方.我在Amazon EC2上有两个单独的SQL Server实例.一个是我们的暂存环境,另一个是我们的生产环境,但它们的配置方式完全相同(从同一图像中生成).
我们有一个数据库,我们上周从登台复制到我们的生产环境.我们将数据库复制到生产的方式是在备份站点上对其进行备份,并在生产中恢复备份.无论如何,我们发现在生产中,一个特定的复杂查询在一小时后超时,但我们的暂存环境中的确切查询在10分钟内完成.
关于两者的解释计划几乎是相同的,除了在一个服务器上它在大表(8M行)上进行PK扫描,而在另一个表上它正在进行索引搜索.我们假设这是不同的.因此,一台服务器正在执行大量磁盘IO,而另一台服务器则没有.
所以我的问题是,一个SQL服务器安装决定使用索引的原因是什么,而另一个忽略它 - 假设相同版本的SQL服务器和相同的数据集?更好的是,找出SQL忽略索引的最佳方法是什么?
这是我们的错误。
经过大量的挖掘调查,我们发现我们的一位开发人员在传输后向生产数据库添加了一些额外的索引。在这种情况下,附加索引实际上导致查询优化器在生产环境中选择效率较低的路线。
删除这些附加索引似乎已经解决了特定查询的性能问题,并且两个解释计划现在是相同的。
| 归档时间: |
|
| 查看次数: |
1188 次 |
| 最近记录: |