这是我需要sql管理员帮助的地方.我在Amazon EC2上有两个单独的sql Server实例.一个是我们的临时环境,另一个是我们的生产环境,但它们的配置方式完全相同(从同一图像中生成).
我们有一个数据库,我们上周从登台复制到我们的生产环境.我们将数据库复制到生产的方式是在备份站点上对其进行备份,并在生产中恢复备份.无论如何,我们发现在生产中,一个特定的复杂查询在一小时后超时,但我们的暂存环境中的确切查询在10分钟内完成.
关于两者的解释计划几乎是相同的,除了在一个服务器上它在大表(8M行)上进行PK扫描,而在另一个表上它正在进行索引搜索.我们假设这是不同的.因此,一台服务器正在执行大量磁盘IO,而另一台服务器则没有.
所以我的问题是,一个安装sql服务器决定使用索引的原因是什么,而另一个忽略它 – 假设相同版本的sql服务器和相同的数据集?更好的是,找出sql忽略索引的最佳方法是什么?