有没有办法找出哪些查询会从特定索引中受益?
我已经使用了DMV视图,我知道索引正在生产中使用,但如果有一种方法可以获得积极影响的查询列表,那将是很好的,所以如果每个索引都值得保留,我可以做出决定
编辑:我正在使用SQL Server
感谢您的帮助!
答案 0 :(得分:0)
从Oracle的角度讲:在Oracle中,我可以检查查询计划,该计划提供了足够的信息来猜测是否使用了索引。请记住,优化器根据手头的SQL做出决策。没有严格的规则可以永久使用或不使用索引。因此,即使您发现正在使用索引,您也可以[几乎]始终修改查询,以便反之亦然!
说到积极的影响:再次,它只会告诉你此刻的情况。例如,表没有足够的记录,全表扫描可能比使用索引更快(由于涉及开销)。但是如果情况发生变化(例如,更多的记录被输入到该表中)会怎么样?
结论:仅仅通过查看今天优化程序确定的内容或者此时DB维护的统计数据,很难永久做出这些决策。您对数据,设计和结构以及查询方式的了解将是制定这些决策的真正关键。
我的猜测是你问这个问题,因为你有很多指数,你想摆脱一些。除非数据快速变化,否则维护指数的开销很小(存储便宜!)。如果是这种情况,那么我们希望优化器足够聪明,可以决定是否使用基于成本的索引......: - )