`
北极的。鱼
  • 浏览: 159283 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】SQL Server索引优化方案

 
阅读更多

转自:http://blog.csdn.net/ylqmf/article/details/5368903

 

一、 主键与聚集索引并不是一对一匹配的

一般情况下我们都认为, 聚集索引和主键是相互匹配的, 因为只要你在SQLServer 表中定义了一个主键, 那么SQLServer 会为这个主键自动添加聚集索引. 但是, 如果你先在表中基于任意一列建立聚集索引, 然后再选择另一列作为主键, 这时, 这个SQLServer 将会基于这个主键建立一个唯一非聚集索引.

二、 聚集索引会被应用到每个查询中

一个SQLServer 表内, 最多只能有一个聚集索引, 并且表中数据行存储的位置由聚集索引来决定. 表中非聚集索引与数据行的映射, 是通过聚集索引来定位的. 当聚集索引执行插入操作时, 数据表中的行要进行移动, 同时该表中所有非聚集索引要重新排列, 这是非常消耗资源并且影响SQLServer 响应速度的.

所以SQLServer 表中的聚集索引一定要避免新添加数据时执行插入操作, 保证表中新添加的数据是从索引的尾部追加的. 这样做可以保证聚集索引相对静态, 对非聚集索引的影响也会减小.

创建聚集索引时, 要选择那些数据会不断增加的字段, 最好的例子就是bbs 发帖表中, 帖子发布时间, 这个字段中的数据是随时间增长的, 理论上讲是不会重复的, 最适合建立聚集索引.

如果你的聚集索引真的做到了不断增加, 那么它的填充因子就应该是 100% , 这个数值越高, 每个8KB 大小的索引页记录的行数就越多, 进行相同的扫描时IO 、内存和CPU 资源就用的越少, 换句话说就是查询效率更高.

三、 聚集索引的数据类型位宽将影响查询效率

聚集索引列的数据类型位宽越小, 查询效率越高, 并且由于非聚集索引是依靠聚集索引来影射SQLServer 表中数据行的, 聚集索引的位宽必将影响表中所有非聚集索引的大小. 通常适合作为聚集索引的类型包括:

Smallint,int,bigint,datetime UNIQUEIDENTIFIER .

分享到:
评论
1 楼 北极的。鱼 2011-08-10  
索引分为两大类:聚集索引和非聚集索引

一、聚集索引

当数据表中的一列被确定为主键后,SQLServer会自动为它建立聚集索引,因为聚集索引是标识每个记录行的键,所以它将被应用到每个查询中.

二、非聚集索引

非聚集索引的情况就比较复杂了,因为它是相对于表独立组织的,在SQLServer中有单独的结构来存储非聚集索引.



有一点是要注意的,不要代替查询优化器去指定某个索引,DBA应该想办法避免优化器不使用索引进行查询:

1、高碎片率

当索引碎片率超过40%的时候,优化器会放弃使用索引,因为在碎片率如此高的索引中扫描数据还不如直接到表中去扫描.

DBA应该常常监视索引碎片率,当达到30%的时候就要考虑重新组织索引

2、唯一性

如果一个索引不是唯一索引,那么优化器会认为直接到数据表中扫描比使用这个索引的效率要高

3、查询中使用了函数

当查询中使用了函数时,在该列上建立的索引是不会被使用的.

例如:col建立了索引,但是在查询中使用了 convert(nvarchar,col)=’test’,这时查询优化器不会使用该索引

4、查询错误的字段

如果建立组合字段的索引,那么只有当第一个列被查询使用时,该索引才会被使用

例如:建立一个索引(col1,col2,col3),当查询中使用col2=’test’时索引不会被使用.只有col1=’test’这样的查询,这个索引才会被使用

如果你想对col3查询时使用索引,那么只能建立两个索引,一个建立在col1上,另一个建立在col3上



另外一个要注意的是,非聚集索引与聚集索引不同,聚集索引填充因子为100%并且没有碎片,因为数据时顺序追加的.非聚集索引要考虑到数据填充时,索引页填充因子.

在重建索引时还要根据前一阶段的监视重新设定填充因子.一般的情况是70%-80%,我最低使用过65%的填充因子.

相关推荐

    SqlServer数据库优化方案[收集].pdf

    【SQL Server数据库优化方案】 SQL Server是微软公司提供的一个全面的数据库管理系统,它涵盖了数据库创建、开发和管理的所有方面。随着信息技术的飞速发展,数据库技术的需求也在不断增长,SQL Server在众多领域...

    sqlserver自动生成sql语句工具sqlserver转oracle

    描述中提到的"sqlserver转oracle"则是指将SQL Server数据库的内容迁移到Oracle数据库的过程。这个过程涉及到SQL语法的转换,因为SQL Server和Oracle虽然都遵循SQL标准,但各自的语法特性和函数库有所不同。例如,SQL...

    SQLServer数据库优化之50种方法

    ### SQL Server 数据库优化之50种方法 在IT领域,特别是对于数据库管理...在实际工作中,还需要根据具体的业务场景和系统架构来制定更加细致的优化方案。希望本文能够为您的SQL Server性能调优工作提供有价值的参考。

    sql server 索引设计与优化

    ### SQL Server 索引设计与优化 #### 索引的重要性 ...通过上述内容的学习,读者不仅能够深刻理解SQL Server索引的设计原理和技术细节,还能够掌握一系列实用的索引优化技巧,从而显著提高数据库系统的整体性能。

    SQL Server SQL优化

    ### SQL Server SQL优化 #### 一、SQL优化的重要性与原则 在SQL Server的实际运行过程中,随着数据量的增长和用户访问频率的提升,数据库性能问题逐渐显现。根据所谓的“二八法则”,即大约20%的慢查询消耗了系统...

    SQLSERVER完全优化教程

    因此,理解和合理利用聚集索引与非聚集索引的区别,以及根据业务需求选择合适的索引策略,是SQLSERVER数据库优化的关键。在设计数据库时,应充分考虑查询模式、数据更新频率以及表的大小,以制定出最适合的索引方案...

    Sql Server查询优化

    此外,SQL Server提供了诸如查询执行计划、性能监视器和索引优化向导等工具,可以帮助数据库管理员更高效地进行查询优化。通过综合运用这些技术和工具,可以有效地提升SQL Server数据库的性能和响应速度。

    SqlServer数据库优化方案.pdf

    SQL Server数据库优化方案 SQL Server是微软公司推出的一款强大的关系型数据库管理系统,它在信息化进程中扮演着关键角色,尤其在当前信息技术快速发展的时代,数据库优化显得尤为重要。优化SQL Server数据库可以...

    SqlServer 索引自动优化工具

    【SqlServer 索引自动优化工具】是一种针对大型数据库中大量表进行索引优化的解决方案。在描述中提到的情况,项目目标是优化一万多个表的索引,包括完善有效索引和移除无效索引,但因人力资源有限,手动操作不可行,...

    sqlserver优化笔记

    通过对SQL Server查询和索引的优化,不仅可以显著提升数据库的性能,还能有效降低系统的运行成本。实践证明,合理的SQL编写习惯与良好的索引管理策略是实现这一目标的关键。此外,定期审查并调整现有的SQL脚本与索引...

    SQL Server数据库优化方案

    1. **索引优化**:没有索引或未有效利用索引会导致查询速度显著下降。创建合适的索引可以加快数据检索,但要注意避免过度索引,因为索引维护也会消耗资源。建议对频繁查询的列以及主键和外键创建索引,避免在值分布...

    SQL Server的全文索引及优化.pdf

    优化过程中需要考虑全文索引的存储和管理方式,这些索引存储在SQL Server外部,大部分的全文查询处理由MSSearch完成。因此,如何合理配置和使用MSSearch是优化全文索引性能的关键。 在全文索引的组件结构中,关系...

    sql server学习手册以及t-sql优化方案.zip

    《SQL Server学习手册》与T-SQL优化方案详解 SQL Server 2008作为Microsoft公司的一款企业级数据库管理系统,广泛应用于数据存储、处理和分析。对于任何希望深入理解和掌握SQL Server的人来说,全面了解其基础知识...

    SqlServer数据库优化方案[借鉴].pdf

    【SQL Server数据库优化方案】 SQL Server是微软公司提供的一个全面的数据库管理系统,它在现代信息技术环境中扮演着重要的角色。随着数据库技术的不断发展,对数据库性能的要求也在不断提升,SQL Server也不例外。...

    sql server 性能优化大全

    在索引优化方面,需要注意以下几点: - 关键字段建立索引:如经常用于查询条件的字段。 - 合理的索引设计:基于对数据库使用情况的分析和预测,选择合适的索引类型。 - 群集索引和组合索引的选择:根据查询模式的...

    SQL Server 2000数据库优化方案参考

    SQL Server 2000数据库优化方案主要针对数据库性能低下、查询速度慢等问题,通过一系列技术和策略提升数据库的运行效率。以下是对这些优化方法的详细解释: 1. **索引优化**:没有索引或未有效利用索引是查询慢的...

    sql server 性能优化

    "sqlserver 优化1.txt"和"sqlserver 优化2.txt"可能是两个独立的文本文件,分别详述了不同的优化策略。可能包括索引管理(如创建非聚簇索引、覆盖索引和空间索引)、存储过程的使用、事务管理、并发控制以及SQL ...

    mysql数据库转换成sql server

    - **索引和查询优化**:SQL Server可能需要不同的索引策略和查询优化技术,迁移后可能需要重新评估和调整。 7. **日志和备份**: - **SQL Server的日志和备份机制**:SQL Server有其独特的日志和备份系统,需要...

    SQL Server索引设计和调优技术大全

    ### SQL Server索引设计与调优技术大全 #### 一、引言 SQL Server作为一款广泛使用的数据库管理系统,其性能的高低直接影响着企业的业务效率。其中,索引的设计与优化是提升SQL Server性能的关键环节之一。合理的...

Global site tag (gtag.js) - Google Analytics