`
javaboy2006
  • 浏览: 186245 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数据库索引应用(转载)

阅读更多
一、索引的概念
        索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

二、索引的特点
    1.索引可以加快数据库的检索速度
    2.索引降低了数据库插入、修改、删除等维护任务的速度
    3.索引创建在表上,不能创建在视图上
    4.索引既可以直接创建,也可以间接创建
    5.可以在优化隐藏中,使用索引
    6.使用查询处理器执行SQL语句,在一个表上,一次只能使用一个索引
    7.其他

三、索引的优点
    1.创建唯一性索引,保证数据库表中每一行数据的唯一性
    2.大大加快数据的检索速度,这也是创建索引的最主要的原因
    3.加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
    4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
    5.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。

四、索引的缺点
    1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
    2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大
    3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度

五、索引分类
    1.直接创建索引和间接创建索引
    直接创建索引: CREATE INDEX mycolumn_index ON mytable (myclumn)
    间接创建索引:定义主键约束或者唯一性键约束,可以间接创建索引
    2.普通索引和唯一性索引
    普通索引:CREATE INDEX mycolumn_index ON mytable (myclumn)
    唯一性索引:保证在索引列中的全部数据是唯一的,对聚簇索引和非聚簇索引都可以使用
    CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)
    3.单个索引和复合索引
    单个索引:即非复合索引
    复合索引:又叫组合索引,在索引建立语句中同时包含多个字段名,最多16个字段
    CREATE INDEX name_index ON username(firstname,lastname)
    4.聚簇索引和非聚簇索引(聚集索引,群集索引)
   聚簇索引:物理索引,与基表的物理顺序相同,数据值的顺序总是按照顺序排列
    CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH
    ALLOW_DUP_ROW(允许有重复记录的聚簇索引)
   非聚簇索引:CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)

六、索引的使用
   1.当字段数据更新频率较低,查询使用频率较高并且存在大量重复值是建议使用聚簇索引
    2.经常同时存取多列,且每列都含有重复值可考虑建立组合索引
    3.复合索引的前导列一定好控制好,否则无法起到索引的效果。如果查询时前导列不在查询条件中则该复合索引不会被使用。前导列一定是使用最频繁的列
    4.多表操作在被实际执行前,查询优化器会根据连接条件,列出几组可能的连接方案并从中找出系统开销最小的最佳方案。连接条件要充份考虑带有索引的表、行数多的表;内外表的选择可由公式:外层表中的匹配行数*内层表中每一次查找的次数确定,乘积最小为最佳方案
    5.where子句中对列的任何操作结果都是在sql运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引;如果这些结果在查询编译时就能得到,那么就可以被sql优化器优化,使用索引,避免表搜索(例:select * from record where substring(card_no,1,4)=’5378’
&& select * from record where card_no like ’5378%’)任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边
    6.where条件中的’in’在逻辑上相当于’or’,所以语法分析器会将in ('0','1')转化为column='0' or column='1'来执行。我们期望它会根据每个or子句分别查找,再将结果相加,这样可以利用column上的索引;但实际上它却采用了"or策略",即先取出满足每个or子句的行,存入临时数据库的工作表中,再建立唯一索引以去掉重复行,最后从这个临时表中计算结果。因此,实际过程没有利用column上索引,并且完成时间还要受tempdb数据库性能的影响。in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引
    7.要善于使用存储过程,它使sql变得更加灵活和高效
分享到:
评论

相关推荐

    秒杀应用的MySQL数据库优化 (转载)

    秒杀应用的MySQL数据库优化是一个重要的议题,尤其是在高并发、数据处理速度要求极高的场景下。这类应用常常面临巨大的压力,如瞬间涌入的大量请求、数据读写速度、以及资源的有效利用。本篇文章将深入探讨如何针对...

    sqlserver数据库优化总结的资料

    在提供的压缩文件中,"SQLSERVER 2005管理与开发 优化SQL Server数据库(转载).mht"可能是关于SQL Server 2005的管理与优化的综合文章,包含了很多实践经验和技巧;"SQL优化.xlsx"可能是对SQL查询优化的实例或数据...

    SQLserver入门教程ppt课件.pptx

    数据库可以应用于超市收银员、火车售票员、营业厅、网站发布新闻、可转载的网络小说、网络视频、博客文章等领域中,用于存储和管理大量数据。 2. 数据库和应用程序: 数据库服务器响应操作并提供数据应用程序,...

    everything

    Everything在第一次运行时,会建立索引数据库。但你丝毫不用担心,其速度极快,生成的索引文件极小!看看本文下面的回复,你会充满信心。亲身体验之后,你或者也会为其速度震惊。或者,你根本没感觉到它需要建立索引...

    sqlserver学习资料(转载!)

    SQL Server是一款由微软开发的关系型数据库管理系统,广泛应用于企业级数据存储、管理和分析。这篇学习资料集合了大师级人物的智慧结晶,对于想要深入理解和掌握SQL Server的人来说是一份宝贵的资源。 1. SQL ...

    程序设计说明书(转载)

    在任何应用环境中,良好的数据库设计能确保数据的有效存储,同时优化数据之间的相互关系和组织形式。数据库设计主要包括确定数据类型、定义数据间的关联以及选择合适的数据库模式。在这个例子中,我们看到数据库名称...

    《转载》oracle1000问

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着重要的地位。这篇《Oracle1000问》文档很可能包含了关于Oracle数据库的常见问题与解答,涉及了从基础概念到高级特性的各个方面。由于...

    B树、B-树、B+树、B树_介绍、比较与小结(转载).doc

    这意味着所有查找操作必须到达叶子节点,但同时也提供了顺序访问的能力,适合数据库索引。 4. **B*树**:B*树是在B+树的基础上进一步优化,非根和非叶子节点增加了指向兄弟的指针,使得节点的分裂和合并更加高效。B...

    本人提供SQL语句大全(转载) 12009年04月28日 星期二 19:35SQL语句大全(转载)

    - 优化数据库结构和索引策略,定期进行统计信息更新。 - 使用数据库内置函数和存储过程来提高执行效率。 综上所述,SQL作为数据库操作的核心语言,其语法的灵活运用和查询的优化是数据库管理和开发中不可忽视的重要...

    摘录转载sql语句大全

    SQL是Structured Query Language的缩写,是用于管理和处理关系型数据库的标准语言。本文摘录了几个关键的SQL优化技巧,旨在帮助...对于数据库管理员和开发者来说,掌握这些知识对于构建高性能的数据库应用至关重要。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    PowerDesigner使用教程

    本文所有文字及图片皆为gzllm(处长)原创,发表于COC未经作者许可,请勿随意转载 PowerDesigner简介 PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型...

    MYSQL培训经典教程(共两部分) 1/2

    数据库优化 177 8.1 索引的使用 178 8.1.1索引对单个表查询的影响 ...转载和修改的速度 191 8.3.4.1 INSERT查询的速度 191 8.3.4.2 UPDATE查询的速度 193 8.3.4.3 DELETE查询的速度 193 8.3.4索引对...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    SQL笔试题(转载的)

    SQL Server是Microsoft公司推出的一款关系型数据库管理系统,它广泛应用于企业数据管理和分析。这篇文档《2011 SQL笔试题》及其压缩包资源,显然是为了帮助学习者或者应聘者准备SQL相关的面试或笔试而准备的。 SQL...

    SQL大总结——转载经典——价值过亿

    8. **索引**:索引可以显著提高查询速度,但也会占用存储空间,合理创建和管理索引是优化数据库性能的关键。 9. **事务处理**:SQL支持ACID(原子性、一致性、隔离性和持久性)属性的事务,确保数据操作的完整性和...

    学术论文防抄袭检测软件

    3. **数据库索引**:软件拥有庞大的文献数据库,这些数据库包含了大量的学术论文、期刊文章、网络资源等,它们被高效地索引,以便快速查找匹配项。 4. **相似度计算**:软件使用特定的算法(如余弦相似度、Jaccard...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    IBM DB2 V9 精品资料.pdf

    IBM DB2 V9 是一款由IBM开发的关系型数据库管理系统,广泛应用于企业级环境中。该版本是DB2系列的一个重要里程碑,引入了许多新的特性和改进,旨在提高性能、增强安全性以及简化管理等。 ### 二、DB2 V9 版本介绍 ...

Global site tag (gtag.js) - Google Analytics