小编Aus*_*hin的帖子

确定表上的索引未使用

我一直在运行这个脚本来试图找到无关的索引

select o.name as TableName, i.name as IndexName, p.reserved_page_count * 8.0 / 1024 as     SpaceInMB, s.*
from     sys.dm_db_index_usage_stats s
inner join sys.objects o on s.object_id = o.object_id
inner join sys.indexes i on i.index_id = s.index_id and i.object_id = o.object_id
inner join sys.dm_db_partition_stats p on i.index_id = p.index_id and o.object_id =      p.object_id
where o.name = ‘TableName’
Run Code Online (Sandbox Code Playgroud)

我知道当 last_user_seek/scan/lookup 都为空时,自上次重启以来没有用户使用过索引。但我想知道 system_scans/lookups/seeks 是什么?因为在某个表上我发现了 5 个没有用户活动的,但一个在 10 天前有系统活动。有没有人对系统扫描/搜索/查找可能有任何了解?这些表似乎真的过度索引,我想减少脂肪。

index sql-server-2005

12
推荐指数
3
解决办法
573
查看次数

DBCC CheckTable 发现两个损坏的索引

我想知道这个问题是否可以通过删除/重新创建两个索引来解决。两者都很少使用,非聚集,非 PK,非 FK 索引。

这是 dbcc 输出:

表错误:表“项目”(ID 1954106002)。数据行在索引“IX_Advertise_BrandCopy_Price_Stock”(ID 69)中没有匹配的索引行。索引行匹配可能缺少或无效的键:

消息 8955,级别 16,状态 1,第 1 行

数据行 (1:11226494:9) 由 (Id = 11078215) 标识,索引值为“AdvertiseFlag = 1 且 BrandCopyParentId = 0 且 NSFPPrice = 137.50 且 NSFPQtyInStock = 0 且 Id = 11078215”。

消息 8951,级别 16,状态 1,第 1 行

表错误:表“项目”(ID 1954106002)。数据行在索引“IX_ITEMS_ADVFLAG_PARETN_PRICE_STOCK”(ID 70)中没有匹配的索引行。索引行匹配可能缺少或无效的键:

消息 8955,级别 16,状态 1,第 1 行

数据行 (1:10834009:15) 由 (Id = 8885719) 标识,索引值为“AdvertiseFlag = 1 且 BrandCopyParentId = 0 且 NSFPPrice = 9.30 且 NSFPQtyInStock = 0 且 Id = …

sql-server

7
推荐指数
1
解决办法
1万
查看次数

DBCC show_statistics:密度与我计算的不符

我在几篇文章中读到列的密度是 (1.0 / count(distinct columnname))。我有一列包含超过 270 万行的大约 260 万个不同值,但 DBCC show_statistics 中的列密度即使在使用 fullscan 更新统计信息后也是 0.48。

我对这个数字可能来自哪里感到困惑。谁能给我解释一下?

sql-server-2005 sql-server

4
推荐指数
1
解决办法
282
查看次数

标签 统计

sql-server ×2

sql-server-2005 ×2

index ×1