快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

亚游手机客户端下载:SQL Server利用sys.dmdbindexphysicalstats查看索引大小碎片等信息



我们都知道,前进sql server的数据查询速率,最有效的措施,便是为表创建索引,而我们对数据表进行新增,删除,改动的时刻,会孕育发生索引碎片,索引碎片多了,对机能孕育发生很大年夜的影响,索引碎片越多对数据库查询的机能影响就越大年夜,这时我们就必要对索引从新组织或从新天生,以达到索引的最大年夜效率。

在sqlserver中索引碎片的大年夜小因此百分最近表现的,假如索引碎片的百分连大年夜于30%以上,就会对影响查询的机能。这时刻我们就必要对该索引进行从新组织或从新天生了,从新组织或从新天生之后,索引碎片就会被删除。

那我们怎么才能知道每张表索引碎片的大年夜小呢?措施有两种:

第一种:

1.右键索引,选择“整个从新组织”,会显示当前表整个所有索引,这是就可以看到“碎片总计”值因此百分比表现的,这时假如值有跨越30%的,就要斟酌是否要从新组织了。

2.假如要从新组织的话,点击“确定”即可。

第二种:使用 sys.dm_db_index_physical_stats 动态函数来查看索引的碎片比率

sys.dm_db_index_physical_stats的定义:

sys.dm_db_index_physical_stats (

{database_id | N亚游手机客户端下载ULL }, { obje亚游手机客户端下载ct_id | NULL }

, { index_id | NULL | 0 }, { partition_number | NULL }

, { mode | NULL | DEFAULT } )

参数解释:

database_id--要查看索引所在亚游手机客户端下载数据库,当前数据库ID我们可以用db_id()函数来取到

object_id--要查索引所在表的id,比如我们要查看表T1,可以用object_id('T1')来取到该表的ID

index_id--要查看索引的索引号,该索引也同样可以用object_id('索引名')来获取

partition_number--工具中的分区号。partition_number为int类型。有效的输入包括索引或堆的 partion_number 或 NULL

mode--

函数的履行模式将确定为了获取此函数所应用的统计信息数据而履行的扫描级别。mode 被指定为 LIMITED、SAMPLED 或 DETAILED。此函数将遍历构成表或索引的指定分区的分配单元页链。

LIMITED:模式运行最快,扫描的页数起码。对付堆,它将扫描所有页,但对付索引,则只扫描叶级上面的父级别页。

SAMPLED亚游手机客户端下载:模式将返回基于索引或堆中所有页的 1%亚游手机客户端下载 样本的统计信息。假如索引或堆少于 10,000 页,则应用DETAILED模式代替 SAMPLED。

DETAILED:模式将扫描所有页并返回所有统计信息。

从 LIMITED 到 DETAILED 模式,速率将越来越慢,由于在每个模式中履行的义务越来越多。若要快速丈量表或索引的大年夜小或碎片级别,请应用 LIMITED 模式。它的速率最快,并且对付索引的IN_ROW_DATA 分配单元中的每个非叶级别,不返回与其对应的一行。

下面经由过程示例来查看:

比如我要查看当前数据库的dbo.Orders表的索引环境,可以用以下的语句查询:

SELECT * FROM sys.dm_db_index_physical_stats(db_id(),object_id('dbo.Orders'),null,null,null)

我们可以经由过程一个例子来测试:

首先,新建一个表并且建立一个聚合索引:

CREATETABLETestTable(rows NCHAR (200) ,rows2 NVARCHAR (max) )

CREATECLUSTEREDINDEX_data_index_TestTable ONTestTable(rows)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: