`
buliedian
  • 浏览: 1238369 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SQL2005合理的索引设计

 
阅读更多

合理的索引有助于提升系统性能和可用程度,我工作中见过一个设计错误的索引导致sqlserver将一台4cpu的服务器资源用尽。 权威参考参见msdn:http://msdn.microsoft.com/zh-cn/library/ms191195.aspx


  1、评估索引本身的占用空间,当索引相对于其数据本身过大可能会无明显作用。这种情况体现在:表很小,索引列过多,索引碎片过多。当索引在select中不起作用时,你还必须在insert和update、delete这些操作中去维护这些不起作用的数据。
  2、In语句不一定不能使用索引,where id in(1,2)和where id =1 or id=2是等效的,这里的in和not in的性能是相同的。而不能使用索引的原因是嵌套查询: where id in(select 1 union select 2).
  3、解除嵌套查询无法利用索引的办法是用exists子查询,select * from tb1 a where exists(select 1 from tb2 where id=a.id)。而exists和not exists的性能和tb1的数据量无关,他们的性能差别在于tb2中的数据量。
  4、Like子句可以利用索引,所以尽可能少用left,right和substring函数。
  5、函数不能使用索引,比如convert(varchar(7),date,120)=’2008-06’,或者datediff函数、甚至和常量的加减乘除运算等,正确的做法是用比较符号或者尽可能把datediff之类的函数放到等号右边。
  6、不用担心隐式转换,它总是转换等号右边的。比如 where id=’2’ 和where id=2是等效的。
  7、聚集索引的查询性能好于非聚集索引,但是维护代价很大,对于他的数据改变会引起整行数据的物理位置移动。同时聚集索引还要为非聚集索引提供索引服务,所以尽量不用过大的列或过多的列作聚集索引。
  8、聚集索引可以极大优化大于,小于,group by和order by以及join语句的查询性能。
  9、一张表只能由一个聚集索引。
  10、唯一索引有助于查询优化。
  11、联合索引的第一列可以单独使用,其他的索引列在单独的where子句中不起作用。
  12、索引的升序降序对order by子句的影响很大。
  13、符合特定条件的计算列也可以创建索引。


分享到:
评论

相关推荐

    SQLServer索引设计经验谈

    本文旨在探讨Microsoft SQL Server中的索引设计技巧,尤其是如何通过合理的索引策略来优化查询性能。通过对聚集索引与非聚集索引的选择、索引列的排序方式、填充因子的设定以及避免不当的索引设计等方面进行详细的...

    Sql2005 全文索引详解

    Sql2005全文索引详解 全文索引是SQL Server 2005中引入的一种高级搜索功能,专门用于处理长度较长的文本字段,如文章内容、文档摘要等。传统索引通常针对数字和短文本字段,对于长文本的查询效率较低。全文索引通过...

    sqlserver索引表设计数据类型选择

    该ppt详细描述sqlserver索引优化时带来的查询性能提升和更新锁开销,最后介绍表设计,字段数据类型的选择及使用适当的冗余减少表连接

    SQL_Server索引设计和调优技巧大全

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

    SQL Server 索引中include的魅力(具有包含性列的索引)

    摘要 1:在 SQL Server 2005 中,可以通过将非键列添加到非聚集索引的叶级别来扩展非聚集索引的功能。通过包含非键列,可以创建覆盖更多查询的非聚集索引。这样可以实现性能提升,因为查询优化器可以在索引中找到...

    SQL SERVER建立索引.pdf

    ### SQL Server 建立索引相关知识点 #### 一、建立索引 索引是在数据库表中的数据列上创建的一种特殊的数据结构,其目的是为了加快数据检索速度。索引类似于书籍的目录,通过索引可以快速定位到所需的数据行,从而...

    sql server 索引设计与优化

    ### SQL Server 索引设计与优化 #### 索引的重要性 索引在SQL Server数据库性能优化中扮演着至关重要的角色。一个精心设计的索引可以极大地提高查询效率,减少资源消耗,从而显著提升整体系统的响应速度。本文旨在...

    24小时SQL 2005教程

    第三部分可能会深入探讨SQL Server 2005的数据存储和管理,包括索引的类型和优化、存储过程的创建和调用、触发器的应用,以及事务和并发控制。这些知识对于提升数据库性能和确保数据一致性至关重要。 第四部分可能...

    SQL2005.rar

    SQL2005支持多种类型的索引,如聚集索引、非聚集索引和全文索引。同时,查询优化器会自动选择最优的执行计划,以达到最佳查询效率。 九、视图与存储过程 视图是虚拟表,由SQL查询结果组成,提供了一种抽象数据的...

    SQLServer索引碎片和解决方法

    同时,合理设计索引,如避免过多的小字段索引,以及选择适合业务场景的索引类型(如聚集索引和非聚集索引),也能有效预防碎片的产生。 总的来说,理解和处理SQLServer中的索引碎片是数据库管理员日常工作中不可或...

    利用索引提高SQLServer数据处理效率

    总结来说,优化SQL Server的索引设计是一个综合考虑查询性能、数据更新成本和存储空间的复杂过程。合理使用聚簇索引、非聚簇索引和覆盖索引,结合对查询模式的深入理解和系统负载的实时监控,可以显著提高SQL Server...

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

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

    SQL Server 2000完结篇系列之七:SQL Server 2000索引优化详解

    在SQL Server 2000中,索引是数据库性能优化的关键组成部分,它极大地影响了数据查询的速度。本文将深入探讨SQL Server 2000中的索引优化,旨在帮助数据库管理员和开发人员理解如何有效地利用索引来提升系统性能。 ...

    数据库设计实验6 sql2005

    在本实验"数据库设计实验6 sql2005"中,我们将聚焦于使用SQL Server 2005进行数据库的设计与实现。SQL Server 2005是Microsoft公司推出的一款强大的关系型数据库管理系统(RDBMS),它提供了丰富的功能,包括数据...

    Microsoft SQL Server 2005 向后兼容组件SQLServer2005_BC.msi

    安装此组件后,用户可以继续使用那些设计时依赖SQL Server 2005特性的应用程序,而无需担心与新版本的不兼容问题。 在SQL Server 2005中,有以下几个核心知识点: 1. **Transact-SQL (T-SQL)**:这是SQL Server的...

    SQL优化与索引设计-Jason豪

    SQL优化与索引设计-Jason豪 500强企业内SQL优化培训PPT,从索引原理到实战演练

    SQL Server索引设计与调优

    总的来说,理解SQL Server索引的工作原理,掌握良好的索引设计与调优策略,对于优化数据库性能、提升应用响应速度具有至关重要的作用。这需要不断学习、实践和调整,才能在复杂的数据环境中游刃有余。

    建立合理的索引提高SQL Server的性能

    总的来说,建立合理的索引策略是提升SQL Server性能的关键。这涉及到对数据库设计的理解、对查询模式的洞察以及对索引特性的深入掌握。通过精心设计和维护索引,可以显著改善数据库的响应时间,从而提高整体应用系统...

    数据库课程设计(SQLServer2005课程设计)

    在本课程设计中,我们深入探讨了SQL Server 2005这一强大的关系型数据库管理系统。SQL Server 2005是微软公司推出的数据库平台,它提供了广泛的功能,包括数据存储、查询、分析和报告,适合于各种规模的企业应用。在...

    SQL2005 数据库经典实例

    1. 数据库设计:SQL Server 2005引入了新的数据库设计工具,如图形化的表设计界面和关系图,使得数据库设计更加直观和高效。通过实例,我们可以学习如何创建和修改表结构,定义数据类型,设置约束(如主键、外键、...

Global site tag (gtag.js) - Google Analytics