SQL Server索引设计和调优技巧大全
优化SQL Server索引的5个小技巧

优化SQL Server索引的5个小技巧优化SQL Server索引的5个小技巧SQL Server中有几个可以让你检测、调整和优化SQL Server性能的工具。
在本文中,我将说明如何用SQL Server的工具来优化数据库索引的使用,本文还涉及到有关索引的一般性学问。
关于索引的常识影响到数据库性能的最大因素就是索引。
由于该问题的简洁性,我只可能简洁的谈谈这个问题,不过关于这方面的问题,目前有好几本不错的书籍可供你参阅。
我在这里只争辩两种SQL Server索引,即clustered索引和nonclustered索引。
当考察建立什么类型的索引时,你应当考虑数据类型和保存这些数据的column。
同样,你也必需考虑数据库可能用到的查询类型以及使用的最为频繁的查询类型。
索引的类型假如column保存了高度相关的数据,并且常常被挨次访问时,最好使用clustered索引,这是由于假如使用clustered索引,SQL Server 会在物理上按升序(默认)或者降序重排数据列,这样就可以快速的找到被查询的数据。
同样,在搜寻把握在确定范围内的状况下,对这些column也最好使用clustered索引。
这是由于由于物理上重排数据,每个表格上只有一个clustered索引。
与上面状况相反,假如columns包含的数据相关性较差,你可以使用nonculstered索引。
你可以在一个表格中使用高达249个nonclustered索引——尽管我想象不出实际应用场合会用的上这么多索引。
当表格使用主关键字(primary keys),默认状况下SQL Server 会自动对包含该关键字的column(s)建立一个独有的cluster索引。
很明显,对这些column(s)建立独有索引意味着主关键字的唯一性。
当建立外关键字(foreign key)关系时,假如你预备频繁使用它,那么在外关键字cloumn上建立nonclustered索引不失为一个好的.方法。
SQL数据库优化与性能调优技巧分享

SQL数据库优化与性能调优技巧分享SQL数据库是现代企业信息系统中不可或缺的重要组成部分。
当企业中数据量逐年增长,数据库的性能问题就会逐渐浮现,并且不断加剧。
这时候,数据库管理员就需要掌握一些优化与调优的技巧来解决这些问题。
本文将分享一些SQL数据库的优化与性能调优技巧。
一、索引的设计索引是SQL数据库中非常重要的性能优化工具,可以提高查找记录的速度。
但是索引设计不好会带来很大的性能问题。
下面是索引设计的一些技巧:1. 首先,需要遵守单一职责原则。
如果一个索引既要支持查询,又要支持排序、分组操作,那么可能需要多个索引来支持这些操作。
2. 在设计索引时,需要考虑查询操作的责任。
如果一个查询经常使用某个条件进行过滤,那么就应该在这个条件上生成索引。
3. 避免过多地创建索引。
虽然索引可以提高查询效率,但是过多的索引也会导致性能下降。
二、查询优化数据查询是数据库中最常见的操作之一,因此对查询进行优化也是很重要的。
下面列举一些查询优化的技巧:1. 避免使用SELECT *语句。
SELECT *会查询出所有记录,包括不需要的记录,从而浪费了服务器和网络带宽资源。
2. 对于大数据量的查询操作,可以采用分页查询的方式,避免一次查询出大量数据影响性能。
3. 避免使用子查询。
虽然子查询可以实现复杂的查询条件,但是会增加CPU和IO负载,降低性能。
三、存储过程与触发器存储过程和触发器是常用的数据库开发技术,在一些场景下可以提高数据库的性能。
下面是相关技巧:1. 存储过程可以保存在数据库中,使得客户端只需调用存储过程名称,而无需发送SQL语句给服务器执行,从而减少网络通信的负担。
2. 触发器是由数据库自动执行的一些任务,它们可以用来监视数据修改操作,并采取相应的行为。
但是使用触发器也会影响数据库的性能,因此应该避免过度使用。
四、分区表对于大规模的数据存储,可以使用分区表技术来分离数据,提高查询效率。
下面是一些技巧:1. 按照时间分区,对于一些涉及时间的数据,可按照时间进行分区,并根据时间进行查询,性能会有显著提升。
SQLServer索引调优实践

SQLServer索引调优实践聚簇索引的唯一性正式聚簇索引的顺序就是数据的物理存储顺序,所以一个表最多只能有一个聚簇索引,因为物理存储只能有一个顺序。
正因为一个表最多只能有一个聚簇索引,所以它显得更为珍贵,一个表设置什么为聚簇索引对性能很关键。
初学者最大的误区:把主键自动设为聚簇索引因为这是SQLServer的默认主键行为,你设置了主键,它就把主键设为聚簇索引,而一个表最多只能有一个聚簇索引,所以很多人就把其他索引设置为非聚簇索引。
这个是最大的误区。
甚至有的主键又是无意义的自动增量字段,那样的话Clustered index对效率的帮助,完全被浪费了。
可以看到设立了索引反而没有任何性能的提升而且消耗的时间更多了,继续调整。
可以看到只有聚簇索引seek了,消除了index scan和nested loop,而且执行时间也只有1m s,达到了最初优化的目的。
组合索引小结小结以上的调优实践,要注意聚簇索引的选择。
首先我们要找到我们最多用到的SQL查询,像本例就是那句类似的组合条件查询的情况,这种情况最好使用组合聚簇索引,而且最多用到的字段要放在组合聚簇索引的前面,否则的话就索引就不会有好的效果,看下例:Index seek 为什么比 Index scan好?索引扫描也就是遍历B树,而seek是B树查找直接定位。
Index scan多半是出现在索引列在表达式中。
数据库引擎无法直接确定你要的列的值,所以只能扫描整个整个索引进行计算。
index seek就要好很多.数据库引擎只需要扫描几个分支节点就可以定位到你要的记录。
回过来,如果聚集索引的叶子节点就是记录,那么Clustered Index Scan就基本等同于full table scan。
一些优化原则1、缺省情况下建立的索引是非聚簇索引,但有时它并不是最佳的。
在非群集索引下,数据在物理上随机存放在数据页上。
合理的索引设计要建立在对各种查询的分析和预测上。
sqlsqerver语句优化方法

sqlsqerver语句优化方法SQL Server是一种关系型数据库管理系统,可以使用SQL语句对数据进行操作和管理。
优化SQL Server语句可以提高查询和操作数据的效率,使得系统更加高效稳定。
下面列举了10个优化SQL Server语句的方法:1. 使用索引:在查询频繁的列上创建索引,可以加快查询速度。
但是要注意不要过度索引,否则会影响插入和更新操作的性能。
2. 避免使用SELECT *:只选择需要的列,避免不必要的数据传输和处理,提高查询效率。
3. 使用JOIN替代子查询:在进行关联查询时,使用JOIN操作比子查询更高效。
尽量避免在WHERE子句中使用子查询。
4. 使用EXISTS替代IN:在查询中使用EXISTS操作比IN操作更高效。
因为EXISTS只需要找到一个匹配的行就停止了,而IN需要对所有的值进行匹配。
5. 使用UNION替代UNION ALL:如果对多个表进行合并查询时,如果不需要去重,则使用UNION ALL操作比UNION操作更高效。
6. 使用TRUNCATE TABLE替代DELETE:如果要删除表中的所有数据,使用TRUNCATE TABLE操作比DELETE操作更高效。
因为TRUNCATE TABLE不会像DELETE一样逐行删除,而是直接删除整个表的数据。
7. 使用分页查询:在需要分页显示查询结果时,使用OFFSET和FETCH NEXT操作代替传统的使用ROW_NUMBER进行分页查询。
这样可以减少查询的数据量,提高效率。
8. 避免使用CURSOR:使用游标(CURSOR)会增加数据库的负载,降低查询效率。
如果可能的话,应该尽量避免使用游标。
9. 使用参数化查询:使用参数化查询可以减少SQL注入的风险,同时也可以提高查询的效率。
因为参数化查询会对SQL语句进行预编译,可以复用执行计划。
10. 定期维护数据库:定期清理过期数据、重建索引、更新统计信息等维护操作可以提高数据库的性能。
SQL Server数据库优化方案汇总

SQL Server数据库优化方案汇总50种方法优化SQL Server1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足5、网络速度慢6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列10、查询语句不好,没有优化可以通过如下方法来优化查询 :1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。
数据量(尺寸)越大,提高I/O越重要.2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)3、升级硬件4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。
注意填充因子要适当(最好是使用默认值0)。
索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段5、提高网速;6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。
配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。
运行 Microsoft SQL Server? 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍。
如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。
将 SQL Server max server memory 服务器配置选项配置为物理内存的 1.5 倍(虚拟内存大小设置的一半)。
7、增加服务器 CPU个数;但是必须明白并行处理串行处理更需要资源例如内存。
SQLServer数据库性能调优技巧

SQLServer数据库性能调优技巧第一章:SQLServer数据库性能调优概述SQLServer是一种常用的关系型数据库管理系统,在大型企业和云计算环境中广泛应用。
为了确保数据库的高性能和可靠性,进行数据库性能调优非常重要。
本章将介绍SQLServer数据库性能调优的概念和目标。
1.1 数据库性能调优的概念数据库性能调优是指通过分析和优化数据库的结构、查询、索引、存储和配置等方面的问题,以提高数据库系统的效率和性能。
优化数据库性能可以显著提升数据的访问速度、减少系统响应时间和提高数据库的处理能力。
1.2 数据库性能调优的目标数据库性能调优的主要目标是提高数据库的运行效率和用户的体验,具体目标包括:- 提高数据的访问速度:通过合理的查询优化和索引设计,加快数据的检索速度。
- 减少系统响应时间:通过调整数据库配置、优化SQL 查询和提高硬件性能等措施,缩短系统响应时间。
- 提高数据库的处理能力:通过合理的分区设计、并行处理和负载均衡等措施,提高数据库的并发处理能力。
第二章:SQLServer数据库性能调优基础在进行SQLServer数据库性能调优之前,有几个基础概念需要了解,包括数据库的结构、查询执行计划和索引等。
2.1 数据库的结构SQLServer数据库由多个表组成,每个表由多个行和列组成。
表有一定的关系,通过主键和外键来建立关联。
了解数据库的结构对于进行性能调优非常重要。
2.2 查询执行计划查询执行计划是SQLServer数据库执行查询语句时的执行路径和操作过程的详细描述。
通过分析查询执行计划,可以找到潜在的性能问题,并进行相应的优化。
2.3 索引索引是一种特殊的数据库对象,用于加快查询速度。
常见的索引类型包括聚集索引、非聚集索引和全文索引等。
合理设计索引可以提高查询的性能。
第三章:SQLServer数据库性能调优技巧本章将介绍一些常用的SQLServer数据库性能调优技巧,包括查询优化、索引优化、配置优化和硬件优化等。
sqlserver 索引用法

标题:深入了解SQL Server索引的用法摘要:本文将深入探讨SQL Server索引的用法,包括索引的概念、创建、优化和使用技巧,帮助读者更好地利用索引提高数据库的性能。
一、索引的概念1. 什么是索引在SQL Server中,索引是一种特殊的数据结构,用于快速定位和访问数据库表中的数据。
通过索引,可以加快数据检索的速度,提高查询性能。
2. 索引的作用索引可以帮助数据库引擎快速定位到符合查询条件的数据,减少数据库的扫描和比对操作,从而提高数据检索的效率。
二、创建索引1. 创建索引的语法在SQL Server中,可以通过CREATE INDEX语句来创建索引,语法如下:```CREATE INDEX index_nameON table_name (column1, column2, ...);```2. 索引的类型SQL Server支持多种类型的索引,包括主键索引、唯一索引、聚簇索引和非聚簇索引等。
不同类型的索引适用于不同的场景,需要根据实际情况选择合适的索引类型进行创建。
三、优化索引1. 索引的设计原则在设计索引时,需要考虑到索引的覆盖性、选择性和唯一性等因素,以及索引对于 INSERT、UPDATE 和 DELETE 操作的影响。
合理的索引设计可以有效提高数据库的性能。
2. 索引的优化策略为了提高索引的性能,可以采取一些优化策略,如合并重叠索引、删除不必要的索引、定期重建索引和使用索引查找替代检索等方法。
四、使用技巧1. 如何使用索引在编写SQL查询语句时,可以通过使用EXPL本人N PLAN或者执行计划等工具来帮助分析查询语句的执行计划,以及确定是否使用了合适的索引。
2. 注意事项在使用索引时,需要注意索引的命中率、页面填充因子、索引维护等问题,以及定期对索引进行监控和优化。
五、总结通过本文的介绍,读者应该对SQL Server索引的概念、创建、优化和使用技巧有了一定的了解。
在实际应用中,需要根据具体的业务需求和数据库环境,选择合适的索引策略,以提高数据库的性能和稳定性。
sqlserver数据库 提高效率方法

SQL Server 数据库是一种常见的关系型数据库管理系统,它被广泛应用于企业级应用程序和数据管理系统中。
然而,随着数据库规模的增大和日常操作的复杂性增加,数据库的性能和效率往往成为关注的焦点。
提高SQL Server数据库的效率不仅可以显著改善系统的响应速度和稳定性,也可以节约资源和降低成本。
本文将介绍一些提高SQL Server 数据库效率的方法,帮助管理员和开发人员更好地管理和优化数据库系统。
1. 使用合适的索引索引是数据库中用来加快对表中数据的访问速度的结构,它可以通过创建索引来优化查询的性能。
在SQL Server中,通过对经常进行搜索,排序和过滤的数据列创建合适的索引,可以显著提高查询性能。
定期对索引进行维护和优化也是提高数据库效率的关键步骤。
2. 优化查询语句优化SQL查询语句对于提高数据库效率至关重要。
在编写查询语句时,应避免使用全表扫描,尽量减少数据量,避免使用不必要的连接和子查询,合理使用排序和分组等操作,以及避免使用模糊查询和通配符查询等低效操作。
3. 定期备份和恢复定期备份数据库是保障数据库安全的重要手段,同时备份还能够减少数据库维护的风险。
在备份时,管理员应该选择合适的备份策略,并对备份文件进行存储和管理,以确保数据库在出现故障或灾难时能够快速恢复。
4. 使用存储过程和触发器存储过程和触发器是SQL Server中重要的数据库对象,它们可以提高数据库的安全性和可维护性,同时还能减少网络流量和客户端执行开销,提高数据库的效率。
在编写存储过程和触发器时,应遵循一些最佳实践,如避免多次嵌套存储过程和触发器,减少对数据库的锁定和阻塞。
5. 使用物理分区技术SQL Server支持对数据表进行物理分区,这可以帮助管理员更好地管理数据,并根据需求对数据进行调优。
通过物理分区,可以提高查询和数据加载的性能,同时也方便了数据备份和恢复。
总结通过上述方法,可以显著提高SQL Server数据库的性能和效率,使其能够更好地满足企业应用程序和数据管理系统的需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server索引设计与调优SQL Server索引技巧设计与调优如果你想极大提高SQL Server性能,本篇指南中提到的索引将是您最佳选择之一。
在本文指南中你将了解如何设计最佳SQL Server索引、如何调整SQL Server索引等一系列内容,让你现存的SQL Server索引能够发挥最佳效能。
SQL Server索引设计SQL Server集簇索引的设计SQL Server中集群索引设计对SQL Server数据库系统性能和未来的维护十分重要。
在本文中你将了解到为什么集群索引应该是静态、随着时间推移而增长、了解它们是如何使用多对多表的。
此外,在文中你还会知道在SQL Server 2005中分区表概念是怎样影响集群索引的。
设计SQL Server集簇索引以提升性能(一)设计SQL Server集簇索引以提升性能(二)如何创建SQL Server索引索引的作用应该是确保主要性能。
本节你将会学到如何清除那些没有价值的索引并识别推荐索引保证你的SQL Server索引能发挥它的最大效能。
SQL Server索引创建技巧(上)SQL Server索引创建技巧(下)如何优化索引索引SQL Server数据库既是艺术也是技术。
我们必须根据设计和编码来选择正确的索引。
但是,当测试索引设计时,我们可能发现它对系统性能的提高并没有达到我们的要求。
我们必须通过学习索引字段、聚簇索引、主键以及索引配置来创建最佳设计的SQL Server索引。
文中介绍了一些设计索引时的常见问题。
专家详解SQL Server 2000创建和优化索引索引的能与不能在这一系列的问题和答案中,我们将了解索引列和数据库的正确含义,避免出现页面拆分的情况并了解SQL Server 2000的能与不能。
SQL Server 2000索引的能与不能(DO和DON’T)改进性能的分区索引SQL Server 2005索引分区允许你将特定索引符合分散到多个文件。
本文中还介绍了如何用分区数据创建索引的方法。
改进SQL Server 2005性能的分区索引(上)改进SQL Server 2005性能的分区索引(下)聚簇索引和非聚簇索引的区别什么时候使用聚簇索引或非聚簇索引呢?回答这个问题有点难度,坦白地说,我即将给出的答案是一个流传已久的标准数据库管理员的回答:“具体问题具体分析”。
有大量因素影响何时以及何地进行索引创建。
幸好只有两个选择,但分析这两个选择的优缺点都相当复杂。
SQL Server中的聚簇索引和非聚簇索引(一)SQL Server中的聚簇索引和非聚簇索引(二)SQL Server非聚簇索引设计非聚簇索引是书签,它们让SQL Server找到我们所查询的数据的访问捷径。
非聚簇索引是很重要的,因为它们允许我们只查询一个特定子集的数据,而不需要扫描整个表。
对于这个重要主题的探讨,我们首先从了解基础开始,比如,聚簇索引与非聚簇索引如何互相作用,如何选择域,何时使用复合索引以及统计是如何影响非聚簇索引的。
设计查询优化的SQL Server非聚簇索引(上)设计查询优化的SQL Server非聚簇索引(下)如何添加非聚簇索引增加非聚簇索引到我们经常要查询的SQL Server列表是很有可能的。
本文就介绍了这方面的知识。
添加非聚簇索引到SQL Server字段创建索引的更好办法为文本数据(varchar、nvarchar、char等)创建索引是一种很好的实现更快数据查询的方法。
然而,这些索引会给存储索引的磁盘以及服务器内存带来压力。
这是因为索引上存有大量的数据。
为文本数据创建索引的更好方法SQL Server索引调优SQL Server Index Tuning Wizard的使用技巧回答如何全面提高SQL Server 2000性能、如何使用SQL Server Index Tuning Wizard技巧更好地理解基本数据库索引。
SQL Server Index Tuning Wizard的使用技巧处理SQL Server 2000索引碎片技巧当遇到数据库的性能问题时,其中一个最大的性能提升方法可以通过优化索引来实现。
索引可以改善数据访问,这样我们就不需要扫描整个表,因为这会消耗大量的CPU、IO和内存资源。
随着时间的推移,索引可能会产生碎片,从而导致SQL Server性能下降、事务时间处理时间变长、阻塞和低吞吐量。
处理SQL Server 2000索引碎片技巧(一)处理SQL Server 2000索引碎片技巧(二)处理SQL Server 2000索引碎片技巧(三)最佳SQL Server索引策略恰当的索引能创建完全不同的性能。
对于大多数的数据类型,SQL Server只支持两种索引类型——聚簇索引和非聚簇索引。
同时,SQL Server也支持全文索引和XML索引,但是它们只与特定数据类型相关。
最佳SQL Server索引策略维护SQL Server索引以实现查询优化维护SQL Server索引是一个不寻常的实践。
如果查询不使用索引,那么往往会有一个新的非聚簇索引被创建,它只是包含一个不同的或是相同的字段组合。
但现在并没有发布一个关于为什么SQL Server会忽略这些索引的详细分析。
如何维护SQL Server索引以实现查询优化(一)如何维护SQL Server索引以实现查询优化(二)如何维护SQL Server索引以实现查询优化(三)SQL Server中用于查找索引碎片的存储过程由于数据修改,SQL Server表和索引会逐渐出现数据碎片。
在大型的I/O操作中,在SQL Server中用到这些碎片索引和表,可能对应用性能产生不利影响。
SQL Server中用于查找索引碎片的存储过程(上)SQL Server中用于查找索引碎片的存储过程(下)设计SQL Server集簇索引以提升性能(一)SQL Server的集簇索引是数据库整体架构的一个非常重要的方面。
它们经常被忽视、误解,或者如果数据库很小,它们会被认为是不重要的。
本文阐述了集簇索引对于整个系统性能以及数据库增大时维护的重要性。
我将主要说明SQL Server集簇索引是如何存储在硬盘中的,为什么它们应该一直随着时间增加以及为什么静态的集簇索引是最好的。
我同时也将探讨多对多表,为什么它们会被使用,以及集簇索引如何能够让这些表效率更高。
最后,很重要的是我们会讨论新的SQL Server 2005分割表概念,并探讨分割表是如何影响集簇索引的。
这将有助于你以后作为出正确的决定性。
集簇索引默认是与匹配主键相匹配的,而主键是定义在SQL Server表上的。
然而,你可以在任何字段上创建一个集簇索引,然后在另一个字段或多个字段上定义一个主键。
这时,这个主键将会作为一个唯一的非集簇索引被创建。
典型地,一个集簇索引会与主键相匹配,但这并不是必须的,所以要仔细考虑。
对于各种可能出现的情况,我将讨论集簇索引本身,而不管你是否选择将它与主键相匹配。
集簇索引实际上装载了SQL Server的数据记录行,所以你的集簇索引存储的地方就是你的数据存储的地方。
集簇索引是按数据范围而组织的。
比如,1到10之间的值存储为一个范围,而90到110是另一个范围。
因为集簇索引是按范围存储的,如果你需要在一个范围中搜索一个审计日志,使用基于日期字段的集簇索引效率会更高,其中日期字段会用于返回日期范围。
非集簇索引更适用于具体值的搜索,比如“等于DateValue的日期”,而不是范围搜索,比如“在date1和date2之间的日期”。
集簇索引的不断增加值集簇索引必须是基于值不断增加的字段。
在前面的例子中,我使用了审计日志的日期字段,审计日志的日期值是不断增加的,而且旧的日期将不会再插入到数据表中。
这就是一个“不断增加”字段。
另一个不断增加值的好例子就是标识字段,它也是从创建后就持续恒定增加的。
为什么我在这里花这么多时间讨论集簇索引的不断增加值呢?这是因为集簇索引的最重要的属性就是它们是不断增加的并且本质上是静止的。
不断增加之所以重要的原因与我之前提到的范围架构有关。
如果值不是不断增加的,SQL Server就必须在现有记录的范围内分配位置,而不是直接将它们放到索引后面的新的范围中。
如果值不是不断增加的,那么当范围的值用完后再出现一个已经用索引范围的值时,SQL Server将做一个页拆分插入一个索引。
在实现时,SQL Server会将已填满的页拆分成两个单独的页,这两个页此时会有更多的值空间,但这需要更多的资源去处理。
你可以通过设置填充参数为70%来作好预备工作,这样就可以有30%的自由空间来为后来的值使用。
这个方法的问题是你必须不断地“再索引”集簇索引使它能维持30%的自由空间。
对集簇索引进行再索引会带来繁重的I/O负载,因为它必须移动它的实际数据,并且任何非集簇索引都必须重建,这会增加许多的维护时间。
如果集簇索引是不断增加的,你将不需要重建集簇索引。
你可以将集簇索引的填充因数设置为100%,这样随着时间的推移,你就只需要对于不集中的、非集簇索引进行再索引,这样就可以增加数据库在线时间。
不断增加的值将只会在索引的尾部添加新值,并且只在需要的时候才创建新的索引范围。
由于新的值都只会不断地添加到索引的尾部而且填充因数为100%,所以将不再会有逻辑碎片出现。
填充因数越高,每一页所填充的记录行就越多。
更高的填充因数使得查询时会需要更少的I/O、RAM和CPU资源。
你查询集簇索引中越少的数据类型,JOIN/查询操作速度会更快。
同时,因为每一个非集簇索引都要求包括集簇索引键,所以集簇索引键和非集簇索引也会更小。
集簇索引的最佳数据类型是非常狭窄的。
对于数据类型大小,它通常是smallint、int、bigint或datetime。
当datetime值用作集簇索引时,它们是唯一的字段并且通常是不断增加的日期值,这些值通常是作为范围数据查询的。
通常,你应该避免组合(多字段)集簇索引,除了以下情况:多对多数据表和SQL Server 2005分割表,这种分割表有分割的字段,它包含了集簇索引而允许索引排列。
(作者:Matthew Schroeder 译者:陈柳/曾少宁 来源:TT中国)这个方法的一个缺点是CustomerOrder表的碎片(不是连续的)。
然而,这并不是一个大问题,因为这个表是相对较小的,它只有2个字段,数据类型也很少,并且只有一个集簇索引。
这些本来是在包括CustomerID的Orders表的非集簇索引的减少,带来的好处是大于额外开销的。
SQL Server 2005的集簇索引和分割表SQL Server 2005中的分割表是一些表面上为一个独立的表,但实际上——在存储子系统中——它们包含能够存储在许多文件组(Filegroup)的多个部分。