sql-server - SQL Server - 如何确定索引是否未被使用?

标签 sql-server database performance indexing

我有一个高需求的事务数据库,我认为它的索引过多。本来,它根本没有任何索引,所以为常见的流程添加一些索引会产生很大的不同。然而,随着时间的推移,我们创建了索引来加速单个查询,一些最流行的表上有 10-15 个不同的索引,在某些情况下,索引彼此之间只有轻微的不同,或者是不同顺序的相同列。

有没有一种直接的方法来观察数据库事件并判断是否有任何索引不再被命中,或者它们的使用百分比是多少?我担心创建索引是为了加速单个每日/每周查询,甚至是不再运行的查询,但每次数据更改时索引仍必须保持最新。

在高流量表的情况下,这是每秒十几次,我想消除拖累数据更新同时只提供边际改进的索引。

最佳答案

查看 sys.dm_db_index_usage_stats 中用户搜索/扫描/查找的数量和最后一个用户搜索/扫描/查找的数量| .这些统计数据会在服务器启动时重置,因此您必须在服务器启动并在足够长的时间内运行相关负载后进行检查。

关于sql-server - SQL Server - 如何确定索引是否未被使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2029441/

相关文章:

sql-server - 在没有 hadoop 的情况下,从 SQL Server 中的表中将 1 TB 数据提取到 Parquet 文件的更快方法是什么

sql-server - 将存储过程结果集分离到临时表中

javascript - 如何正确连接到 mongodb.atlas? Mongo网络错误

java - 如何在 Java 中查找 CPU 密集型类?

sql - 查询需要长时间的调整建议

java - 将时间/日期时间与时区信息完整提取到 Java8 OffsetTime/OffsetDateTime 中

c# (3.5) 使用 TableAdapters 将空 DateTime 值读/写到数据库

php - 保存与外键相关的模型的最佳实践

javascript - 如何优化/加速 Vue JS 应用程序中的自动搜索?

java - Java中try catch的最佳选择