`

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索引设计经验谈

    SQLServer索引设计经验谈SQLServer索引设计经验谈

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

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

    SQL Server索引设计与调优

    SQL Server索引设计与调优SQL Server索引设计与调优

    SQL Server数据库索引设计的研究.pdf

    SQL Server数据库索引设计的研究.pdf

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

    在当的地方增加适当的索引并从不...实践表明,合理的索引设计是建立在对各种查询的分析和预测上的,只有正确地使索引与程序结合起来,才能产生最佳的优化方案。本文就SQL Server索引的性能问题进行了一些分析和实践。

    sql server 索引设计与优化

    如果你想极大提高 SQL Server 性能,本篇指南中提到的索引将是您最佳...在本文指南中你将了解如何设计最佳 SQL Server 索引、如何调整 SQL Server 索引等一系 列内容,让你现存的 SQL Server 索引能够发挥最佳效能。

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    本书涵盖了T-SQL程序设计的方方面面,如基于集合的编程技术、日期和时间相关的XML和CLR数据类型的使用、临时对象、T-SQL和CLR用户自定义函数、存储过程、触发器、事务和新的错误处理结构、应用并发模型支持并发用户...

    SQL经典教程与索引与优化设计

    如果你想极大提高SQL Server 性能,本篇指南中提到的索引将是您最佳选择...在本文指南中你将了解如何设计最佳 SQL Server 索引、如何调整 SQL Server 索引等一系 列内容,让你现存的 SQL Server 索引能够发挥最佳效能。

    SQLServer2005数据库学习笔记

    │ SQLServer2005安装及使用.txt │ ├─02 常用函数 │ function.sql │ ├─03 建表、建库 │ create.sql │ ├─04 查询语句 │ netnote_sql.sql │ T-SQL(1).sql │ 收藏SQL语句.sql │ 精妙SQL语句收集_sql....

    sql2005全文检索.doc

    内容摘要:本文提供了网站如何设计和实现基于SQL Server 2005的全文检索实例,希望能对正在使用SQL Server 2005构建网站搜索的同仁有所裨益。 一、前言 “人类失去搜索,世界将会怎样?”,同样,很难想象一个拥有极...

    高效SQL优化及战略索引设计技术

    高效SQL优化及战略索引设计技术 1、数据市场分析 2、高效SQL优化方法 3、战略索引设计方法

    数据库索引设计与优化

    , 《数据库索引设计与优化》适用于已经具备了SQL 这一关系型语言相关知识,希望通过理解SQL 性能相关的内容,或者希望通过了解如何有效地设计表和索引而从中获益的人员。另外,《数据库索引设计与优化》也同样适用于...

    SQL Server 2005 中的分区表和索引

    SQL Server 2005 中基于表的分区功能为简化分区表的创建和维护过程提供了...追溯从逻辑分区表和手动分区表的功能到最新分区功能的发展历程,探索为什么、何时以及如何使用 SQL Server 2005 设计、实现和维护分区表。

    SQL Server2005基础教程

    本书重点阐述了SQL Server 2005的基础知识,前半部分以建立一个金融数据库系统为主线,从最基础的收集信息入手,一步步地引导读者学会如何保证数据库的安全,创建表、主键、索引等项目,在表之间建立恰当的关系,并...

    sql索引提高数据库性能

    好的索引可以非常有效的提高数据库的性能,想要设计好一个索引却是一件不容易的事,所以有人说索引是一门艺术

    数据库索引设计与优化.pdf

    《数据库索引设计与优化》适用于已经具备了SQL 这一关系型语言相关知识,希望通过理解SQL 性能相关的内容,或者希望通过了解如何有效地设计表和索引而从中获益的人员。另外,《数据库索引设计与优化》也同样适用于...

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

    数据库运行调优操作介绍大全,包括索引技巧,索引碎片的整理等,作者:Matthew Schroeder 译者:陈柳/曾少宁

Global site tag (gtag.js) - Google Analytics