WEB开发网
开发学院数据库MSSQL Server SQL Server使用索引实现数据访问优化 阅读

SQL Server使用索引实现数据访问优化

 2009-06-09 10:31:41 来源:WEB开发网   
核心提示: 第三步:如果有碎片发生,重新整理它到了这里,SQL Server使用索引实现数据访问优化(8),如果你已经在表里创建了所有正确的索引,但是,因为:下一个相关联的数据页不临近,而且这些相关连的下面的页码可能在数据文件的任何地方,你可能还没有获得所希望的良好的性能,什么原因呢?有一种可能是出现

第三步:如果有碎片发生,重新整理它

到了这里,如果你已经在表里创建了所有正确的索引,但是,你可能还没有获得所希望的良好的性能。什么原因呢?有一种可能是出现了索引碎片。

1、什么是索引碎片

索引碎片是这样一种情形:由于在表里大量的插入、修改、删除操作而使索引页分裂。如果索引有了高的碎片,有两种情况,一种情况是扫描索引需要花费很多的时间,另一种情况是在查询的时候索引根本不使用索引,都会导致性能降低。

有2种类型的碎片:

内部破碎:由于索引页里的数据插入或修改操作而发生,以数据作为稀疏矩阵的形式的分布而结束,这将导致数据页的增加,从而增加查询时间。

外部破碎:由于索引/数据页的数据插入或修改而发生,以页码分离和在文件系统里不连贯的新的索引页的分配而结束,数据库服务器不能利用预读操作的优点,因为:下一个相关联的数据页不临近,而且这些相关连的下面的页码可能在数据文件的任何地方。

2、如何知道索引破碎是否已经发生?

在数据库执行下面的SQL语句(下面的语句在SQLserver2005及以后的版本运行正常,以你的目标数据库的名字取代AdventureWorks’)

SELECTobject_name(dt.object_id)Tablename,si.name
 

IndexName,dt.avg_fragmentation_in_percentAS
ExternalFragmentation,dt.avg_page_space_used_in_percentAS
InternalFragmentation
FROM
(
SELECTobject_id,index_id,avg_fragmentation_in_percent,avg_page_space_used_in_percent
FROMsys.dm_db_index_physical_stats(db_id('AdventureWorks'),null,null,null,'DETAILED'
)
WHEREindex_id<>0)ASdtINNERJOINsys.indexessiONsi.object_id=dt.object_id
ANDsi.index_id=dt.index_idANDdt.avg_fragmentation_in_percent>10
ANDdt.avg_page_space_used_in_percent<75ORDERBYavg_fragmentation_in_percentDESC

上一页  3 4 5 6 7 8 9  下一页

Tags:SQL Server 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接