我在存储过程中有一个查询,当它通常以毫秒为单位运行时,相同的输入将定期超时(> 30 秒)。
该表有 2077748 行、59 列和 13 个索引。我们发现重建其中一个索引会使性能恢复到毫秒级。
这是有趣的部分。此索引每次重建时的碎片百分比小于 1%,上次为 0.01%。我一直在玩填充因子,因为我认为这可能是一个扩展问题,它是 100,然后是 80,现在是 60。这并没有影响这个问题的频率。
当我运行以下
select b.name,*
from sys.dm_db_index_physical_stats(5,1075691080,NULL,NULL,NULL) a
JOIN sys.indexes b ON a.object_id = b.object_id AND a.index_id = b.index_id
Run Code Online (Sandbox Code Playgroud)
我得到
index_id partition_number index_type_desc alloc_unit_type_desc index_depth index_level avg_fragmentation_in_percent fragment_count avg_fragment_size_in_pages page_count
66 1 非聚集索引 IN_ROW_DATA 3 0 0.01 1116 18.9229390681004 21118
关于其他地方的任何建议或此问题的来源?
sql-server ×1