DBCC SHOWCONTIG scanning 'MyTable' table...
Table: 'MyTable' (2048062382); index ID: 1, database ID: 28
TABLE level scan performed.
- Pages Scanned................................: 1019182
- Extents Scanned..............................: 127400
- Extent Switches..............................: 127399
- Avg. Pages per Extent........................: 8.0
- Scan Density [Best Count:Actual Count].......: 100.00% [127398:127400]
- Logical Scan Fragmentation ..................: 0.01%
- Extent Scan Fragmentation ...................: 77.25%
- Avg. Bytes Free per Page.....................: 135.7
- Avg. Page Density (full).....................: 98.32%
Run Code Online (Sandbox Code Playgroud)
我读过 Scan Density = 100% 非常好,并且 Logical Scan Fragmentation <1% 也很棒。77% …
performance sql-server fragmentation sql-server-2012 query-performance
我通过使用 sql profiler 观看测试站点发现了这个查询,任何需要超过 10 秒的时间。我将代码直接从 sql profiler 中放入 sql studio,在那里它能够快速执行。可以使用 DBCC DROPCLEANBUFFERS 重置缓慢的“首次运行”行为。
这是慢查询:
exec sp_executesql N'SELECT [t0].*
FROM [dbo].[MyTable] AS [t0]
WHERE [t0].[ParentID] IN (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20, @p21, @p22, @p23, @p24, @p25, @p26, @p27, @p28, @p29, @p30, @p31, @p32, @p33, @p34, @p35, @p36, @p37, @p38, @p39, @p40, @p41, @p42, @p43, @p44, @p45, @p46, @p47, @p48, @p49, @p50, @p51, @p52, @p53, …Run Code Online (Sandbox Code Playgroud)