`

SQLSERVER 索引 填充因子

阅读更多

首先SQL SERVER里面有四种索引类型。

1.唯一索引 :(创建唯一约束的时候自动生成唯一索引)

2.主键索引 :(创建主键时自动生成索引,是一种特殊的唯一索引,和唯一索引的区别是【唯一允许NULL值,主键不允许为空】。并且他是特殊的聚集索引)

3.聚集索引 :(自动会进行排序。每个表只能有一个。如果一个字段经常用来order by ,group by ,或者当作查询条件,那个这个字段有必设置成聚集索引)

4.非聚集索引 :(非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于249个)

后面还要指定一个填充因子。填充因子:数据经常变化,填充因子就设置的越大,如果数据基本不变化,填充因子相对设置较小。(一般情况下只有不对数据进行操作时才进行此设置)。

创建索引时,可以指定一个填充因子,以便在索引的每个叶级页上留出额外的间隙和保留一定百分比的空间,供将来表的数据存储容量进行扩充和减少页拆分的可能性。

填充因子的值是从   0   到   100   的百分比数值,指定在创建索引后对数据页的填充比例。值为   100   时表示页将填满,所留出的存储空间量最小。只有当不会对数据进行更改时(例如,在只读表中)才会使用此设置。值越小则数据页上的空闲空间越大,这样可以减 少在索引增长过程中对数据页进行拆分的需要,但需要更多的存储空间。当表中数据会发生更改时,这种设置更为适当。

填充因子越大,意味着一个索引页包含的索引记录越多,空闲空间越小.一般来说查询的效率越高,因为这样查询的时候,可以减少读取索引页的工作量和减少内存使用  
但这样导致的结果是数据变动导致的索引维护的工作量增加,因为索引页的空闲空间小,如果不能在本页内完成索引调整,就会引起调整其他索引页 。


数据页
当索引建立起来的时候,SQLServer就建立数据页(datapage),数据页是用以加速搜索的指针。当索引建立起来的时候,其对应的填充因子也即 被设置。设置填充因子的目的是为了指示该索引中数据页的百分比。随着时间的推移,数据库的更新会消耗掉已有的空闲空间,这就会导致页被拆分。页拆分的后果 是降低了索引的性能,因而使用该索引的查询会导致数据存储的支离破碎。当建立一个索引时,该索引的填充因子即被设置好了,因此填充因子不能动态维护。

为了更新数据页中的填充因子,我们可以停止旧有索引并重建索引,并重新设置填充因子(注意:这将影响到当前数据库的运行,在重要场合请谨慎使用)。 DBCC INDEXDEFRAG和DBCC DBREINDEX是清除clustered和nonculstered索引碎片的两个命令。INDEXDEFRAG是一种在线操作(也就是说,它不会阻 塞其它表格动作,如查询),而DBREINDEX则在物理上重建索引。在绝大多数情况下,重建索引可以更好的消除碎片,但是这个优点是以阻塞当前发生在该 索引所在表格上其它动作为代价换取来得。当出现较大的碎片索引时,INDEXDEFRAG会花上一段比较长的时间,这是因为该命令的运行是基于小的交互块 (transactional block)。

分享到:
评论

相关推荐

    SQLServer索引碎片和解决方法

    SQLServer中的索引碎片是影响数据库性能的重要因素,它分为外部碎片和内部碎片两种类型。外部碎片发生在索引页不在其逻辑顺序上时,导致查询过程中需要额外的页切换,尤其是对于返回有序结果集的查询,这将显著降低...

    优化SQL Server索引的小技巧

    为了更新数据页中的填充因子,我们可以停止旧有索引并重建索引,并重新设置填充因子。 DBCC INDEXDEFRAG 和 DBCC DBREINDEX 是清除 clustered 和 nonclustered 索引碎片的两个命令。 INDEXDEFRAG 是一种在线操作,而...

    SQLServer索引设计经验谈

    ### SQL Server索引设计经验谈 #### 摘要 本文旨在探讨Microsoft SQL Server中的索引设计技巧,尤其是如何通过合理的索引策略来优化查询性能。通过对聚集索引与非聚集索引的选择、索引列的排序方式、填充因子的...

    常用经典sql语句(sqlserver版)

    SQL Server 数据库管理常用的SQL和T-SQL语句 ...SQLSERVER 索引 填充因子 Server 中一个非常强大的日期格式化函数 根据表中数据生成insert语句的存储过程.txt 精妙的SQL语句.txt 事务处理.txt php_ADODB.txt

    sql server创建索引

    通过以上命令,我们创建了一个名为`ix_writtenexam`的非聚集索引,该索引应用于`stumarks`表的`writtenexam`列,并且设置了填充因子为30%,这意味着每个索引页仅填充至30%的容量,以留出更多空间供将来数据插入。...

    提高SQL Server性能,可通过DBCC DBREINDEX重建索引

    ### 提高SQL Server性能:通过DBCC DBREINDEX重建索引 #### 一、引言 在数据库管理系统中,SQL Server作为一款广泛使用的数据库产品,其性能优化是...此外,合理设置填充因子也是优化索引空间利用率的重要手段之一。

    对SQL Server索引的探讨.pdf

    在对SQL Server索引的探讨中,需要掌握的关键知识点包括索引的类型、作用、以及如何管理和维护索引。以下是对这些知识点的详细阐述: 1. 索引的类型 索引分为聚集索引(Clustered Index)和非聚集索引...

    SQL Server索引设计与调优

    同时,别忘了考虑索引填充因子,它决定了新插入的数据在索引页上的空间预留,合理设置可减少页分裂并优化空间利用率。 索引的维护同样重要,包括定期重建和重新组织索引。重建可以解决碎片问题,提高索引效率;重新...

    SQL Server 2000数据库中如何重建索引

    这在你想要改变索引的填充因子或者有其他特定需求时非常有用。 重建索引的过程不仅考虑了性能提升,还涉及数据的排序顺序。使用`DROP_EXISTING`或`DBCC DBREINDEX`时,可以保留现有的数据排序,从而避免了重新排序...

    SQL Server索引技术.pdf

    聚簇索引和非聚簇索引有着不同的体系结构和适用情况,创建合适的索引并适当设置填充因子,是优化数据库性能的有效手段。在设计和优化数据库系统时,必须根据实际的数据访问模式和查询类型,仔细考虑是否使用以及如何...

    SqlServer性能优化高效索引指南

    此外,填充因子(FILLFACTOR)的设置也会影响索引页的使用效率和存储空间的利用率。 五、索引设计的其他因素 在设计索引时,需要考虑多方面的因素。例如,数据类型的选择会影响索引的空间占用和性能表现。整型(int...

    SQL Server索引技术的教学实践.pdf

    通过理解和运用SQL Server索引技术,数据库管理员可以显著提高数据检索速度,同时也要注意索引维护对性能的影响。 索引概念解析: 索引是数据库中用于快速查找数据表中记录的逻辑结构,它并不直接包含数据,而是...

    SQLServer索引+性能优化.rar

    在这个名为"SQLServer索引+性能优化.rar"的压缩包中,包含了一系列关于SQL Server性能优化和索引原理的PPT材料,适合初学者进行深入学习。 首先,让我们来了解索引的基本概念。在数据库中,索引就像是书籍的目录,...

    优化 SQL Server 索引的小技巧

    总的来说,优化SQL Server索引需要综合考虑索引类型的选择、填充因子的设定、统计信息的维护以及定期的数据库维护。通过合理运用这些策略,可以显著提升SQL Server的查询性能,降低数据库的响应时间,提高系统的整体...

    sql填充因子

    在SQL Server数据库管理与优化领域中,**填充因子(Fill Factor)**是一个关键概念,它直接影响到索引的性能和存储效率。填充因子设定为索引页(Index Pages)在创建或重建时所能使用的空间百分比。具体而言,当一个...

    详解sqlserver查询表索引

    这个查询不仅显示索引的基本信息,还包含了排序方向、是否为主键索引、是否唯一、忽略重复键、是否禁用、填充因子和是否启用填充等详细属性。 总之,理解并有效地管理SQL Server中的索引对于优化数据库性能至关重要...

    SQL Server中优化其索引的妙招

    填充因子是决定索引页中数据占用空间的百分比,合理设置可以减少因更新导致的页拆分,从而维护索引性能。然而,填充因子一旦设定便无法动态调整,若需更新,需要重建索引,但此过程可能影响数据库运行,需谨慎操作。...

    SQL Server 2005中的主要管理工具和实用程序具

    它允许你调整SQL Server的安全表面区域,例如改变远程连接、默认数据库文件位置、填充因子设置等,从而提高安全性并根据需求定制服务器功能。 总的来说,理解和掌握这些工具对于有效管理和维护SQL Server 2005环境...

Global site tag (gtag.js) - Google Analytics