sql server重建索引
sql server重建索引
sql server重建索引一、查看索引的使用情况
SELECT o.name as tablename,s.* FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) s,sys.objects o
where o.object_id =s.object_id
order by avg_fragmentation_in_percent desc
查询结果中的列avg_fragment_size_in_pages值超过40%就需要重建索引,可以减少IO扫描操作
二、确定表或索引有碎片问题后,解决方法有
1、删除并重建索引
用DROP INDEX和CREATE INDEX或ALTER TABLE来删除并重建索引有些缺陷包括在删除重建期间索引会消失。在索引删除重建时,对于查询它不在可用,查询性能也许会受到明显的影响,直到重建索引为止。另一个潜在的缺陷是当都请求索引的时候会引起阻塞,直到重建索引为止。通过其他的处理也能解决阻塞,就是索引被使用的时候不删除索引。另一个主要的缺陷是在用DROP INDEX和CREATE INDEX重建聚集索引时会引起非聚集索引重建两次。删除聚集索引时非聚集索引的行指针会指向数据堆,聚集索引重建时非聚集索引的行指针又会指回聚集索引的行位置。
删除并重建索引的确有一个好处就是通过重新排序索引页,使索引页紧凑并删除不需要的索引页来完全重建索引。你也许需要考虑那些内部和外部碎片都很高的情况下才使用,以使那些索引回到它们应该在的位置。
2、使用alter
例如:alter index pk_my_users on my_users rebuild;
3、使用DROP_EXISTING子句重建索引
为了避免在重建聚集索引时表上的非聚集索引重建两次,可以使用带DROP_EXISTING子句的CREATE INDEX语句。这个子句会保留聚集索引键值,以避免非聚集索引重建两次。和删除并重建索引一样,该方法也可能会引起阻塞和索引消失的问题。该方法的另一个缺陷是也强迫你去分别发现和修复表上的每一个索引。
除了和上一个方法一样的好处之外,该方法的好处是不必重建非聚集索引两次。这样可以对那些带约束的索引提供正确的索引定义以符合约束的要求。
4、执行DBCC DBREINDEX
DBCC DBREINDEX允许SQLServer给索引分配新页来减少内部和外部碎片。DBCC DBREINDEX也能动态的重建带约束的索引。
DBCC DBREINDEX的缺陷是会遇到或引起阻塞问题。DBCC DBREINDEX是作为一个事务来运行的,所以如果在完成之前中断了,那么你会丢失所有已经执行过的碎片。
5、执行DBCC INDEXDEFRAG
DBCC INDEXDEFRAG按照索引键的逻辑顺序,通过重新整理索引里存在的叶页来减少外部碎片,通过压缩索引页里的行然后删除那些由此产生的不需要的页来减少内部碎片。它不会遇到阻塞问题但它的结果没有其他几个方法彻底。这是因为DBCC INDEXDEFRAG跳过了锁定的页且不使用任何新页来重新排序索引。如果索引的碎片数量大的话你也许会发现DBCC INDEXDEFRAG比重建索引花费的时间更长。DBCC INDEXDEFRAG比其他方法的确有好处的是在其他过程访问索引时也能进行碎片整理,不会引起其他方法的阻塞问题。
- sqlserver 锁表原因(SQL Server学习笔记之事务、锁定、阻塞、死锁用法详解)
- sqlserver使用说明(SQL Server视图的讲解)
- sql设计数据库过程文字详述(Sql Server 数据库中调用dll文件的过程)
- sqlserver存储过程同步数据(SQL Server存储过程同时返回分页结果集和总数)
- SQL Server Profile事件含义
- sql server创建的表在哪(浅析SQL Server授予了CREATE TABLE权限但是无法创建表)
- sql server代理无法启动服务(SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法)
- sql server查询操作怎么做(sqlserver分页查询处理方法小结)
- sqlserver降序排列(SQL SERVER临时表排序问题的解决方法)
- sql server2012表的数据删除(SQL Server删除表及删除表中数据的方法)
- sql server内外连接的作用(浅谈SQL Server交叉联接 内部联接)
- sql server 2019 资源不足不可信(SQL Server异常代码处理的深入讲解)
- SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法(SQL Server免费版的安装以及使用SQL Server Management StudioSSMS连接数据库的图文方法)
- centos中安装sql图(CentOS 7.3上SQL Server vNext CTP 1.2安装教程)
- SQL Server表误删记录如何恢复
- sqlserver触发器修改当前字段(利用SQL Server触发器实现表的历史修改痕迹记录)
- 8月再见 9月你好(8月再见)
- 魔兽世界 设计师爆料,原始版本并无PVP,跨阵营属于返璞归真(魔兽世界设计师爆料)
- 吐槽完《弧光大作战》之后,我们和设计师聊了聊魔兽首款手游的立项初衷和未来(吐槽完弧光大作战之后)
- 魔兽争霸3自定义战役少年杰雷 2(魔兽争霸3自定义战役少年杰雷)
- 今日菜价 芥兰涨幅最高 1.33 ,花菜降幅最高 3.10(今日菜价芥兰涨幅最高)
- 今日菜价 椰菜涨幅最高 3.25 ,水空心菜降幅最高 2.58(今日菜价椰菜涨幅最高)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9