我有一个在SQL Server2005上运行的大型数据库。我查询DMV sys.dm_db_index_physical_stats以获取索引碎片信息。
我很震惊地看到avg_fragment_size_in_percent报告了大量碎片级别非常糟糕的索引(其中许多索引的碎片级别高达99%)。这些是在具有非平凡页数的表上(最小的500+页)。
我继续对最严重的违规者运行以下代码:
ALTER INDEX ALL ON myTable REBUILD WITH(ONLINE = ON)
然后我重新查询了sys.dm_db_index_physical_stats,但是它在索引重建之前和之后报告的
我正在编写一个存储过程,它以数据库名称作为参数,并返回该数据库的索引及其碎片级别的表。这个存储过程将驻留在我们的DBA数据库中( DB包含DBA用于监视和优化事物的表)。所讨论的系统都是Server 2008 R2,如果这有区别的话。
我已经完成了基本的查询,但仍然无法提供索引的实际名称。据我所知,这些信息包含在每个人的sys.indexes视图中。我的具体问题是尝试以编程方式从另一个数据库的存储过程中引用该视图。
为了说明,这是所讨论的查询的一部分:
FROM sys.dm_db_index_physical_stats(@db_id,NULL,NULL,NULL,NULL) p
INNER
我有一个表,其中包含超过10亿行的时间序列数据,插入性能非常出色,但(有时) select性能很糟糕。
表tblTrendDetails (主键顺序如图):
PK TrendTime datetime
PK CavityId int
PK TrendValueId int
TrendValue real
该表不断地拉入新数据并清除旧数据,因此插入和删除性能需要保持快速。
执行如下查询时,性能较差(30秒):
SELECT *
FROM tblTrendDetails
WHERE TrendTime BETWEEN @inMinTime AND @inMaxTi