查询和解决数据库表索引碎片占用

查询和解决数据库表索引碎片占用

**
软件时间长了就会反应卡顿,很大部分原因是数据库响应时间变长造成的。

索引碎片简介

SQL存储的概念,sql是按页单位进行数据存储,
每一页包含 8060字节。
每一个区包含8个页
索引碎片分为 内部碎片和外部碎片两种。
索引碎片的产生:
外部碎片产生的原因:当我们插入一行数据时,当前页剩余空间无法满足数据插入所需的空间,此时就是
发生分页现象(一条数据插入两页中),此时就会导致外部碎片
内部碎片:当数据表中一行数据大于 8060时候,就会产生一页无法放置一行数据,就会产生
内部碎片,内部碎片对查询有很大的影响。

(故建表时,要进行保证数据行插入的倍数可以整除8060)

查询索引碎片的方法

SELECT object_name(dt.object_id) Tablename,si.name IndexName,
dt.avg_fragmentation_in_percent AS ExternalFragmentation,
dt.avg_page_space_used_in_percent AS InternalFragmentation FROM
( SELECT object_id,index_id,avg_fragmentation_in_percent,avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats (db_id(‘数据库名’),null,null,null,’DETAILED’ )
WHERE index_id <> 0) AS dt INNER JOIN sys.indexes si ON si.object_id=dt.object_id
AND si.index_id=dt.index_id
AND dt.avg_fragmentation_in_percent>10 AND
dt.avg_page_space_used_in_percent<75 ORDER BY avg_fragmentation_in_percent DESC

解决办法:
设置维护计划定时重新组织和生成索引。

如有不同意见欢迎指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值