这是一个Amazon Aurora实例。Amazon Aurora突然使用错误索引
我有一个查询做得很好,并且使用了具有高基数的索引p_date(datetime)。
但自从最近几天以来,查询需要很长时间。我查看了Newrelic事务日志,发现使用了一个不同的索引状态(VARCHAR),它具有非常低的基数。
通过解释查询,我可以看到它使用索引交集以及另一个键也是低基数是客户端ID。
所有指数从一开始就在那里。在大多数查询中,我们在where子句中使用p_date和status。
为什么数据库想要突然使用这个索引有什么原因吗?代码中没有更改,因此SQL查询是相同的。然而,上述表格中,我从上周删除了大量的行(从3个表中的9k-15k)。他们可以成为一个原因吗?我在这些表上使用随机UUID作为主键。
我是否需要运行“分析表”或类似的东西?我应该删除该索引?不确定这是否会对性能产生影响。
我保留了数据库实例的默认数据库参数组。那里需要做什么调整?
谢谢你。这是在最初创建模式时完成的。只有在使用其他索引时发现记录更快才能使用它,因为没有合适的选择。我现在在查询中重要的字段中添加了一些复合索引,并删除了那些无用的索引:) – James