`
litxuf
  • 浏览: 122471 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL索引

    博客分类:
  • sql
SQL 
阅读更多

一、索引的概念
        索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。
二、索引的特点
    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变得更加灵活和高效

 
分享到:
评论

相关推荐

    sql索引提高数据库性能

    SQL索引是数据库管理系统中用于加速数据检索的关键技术。索引可以极大地提高查询性能,尤其在处理大量数据时。在SQL Server 2000中引入了一种特殊类型的索引——索引视图,它是视图与索引的结合,旨在进一步提升性能...

    SQLAdvisor,输入SQL,输出SQL索引优化建议

    主要功能:输出SQL索引优化建议 二、SQLAdvisor详细说明 SQLAdvisor快速入门教程 SQLAdvisor架构和实践 SQLAdvisor release notes SQLAdvisor开发规范 FAQ SQLAdvisor是由美团点评公司技术工程部DBA团队(北京)...

    05++sql索引

    SQL索引是数据库管理系统中的重要组成部分,它对提高查询效率起着至关重要的作用。在数据库中,特别是处理大规模数据时,如果没有索引,查询过程可能会非常慢,因为系统需要逐行扫描整个表来找到匹配的记录。而索引...

    SQL索引及SQL语句的应用技巧分析.pdf

    SQL索引及SQL语句的应用技巧分析 SQL索引是数据库中特殊的表,是对数据库中某一列或多列的一个排序,目的是加快数据库的查询速度。从物理存储上看,索引分为聚集索引和非聚集索引。聚集索引的数据排序和物理磁盘上...

    SQL索引一步到位1

    SQL索引是数据库管理系统中用于加速数据检索的一种数据结构,其主要目的是提升SQL查询的效率。索引分为两种类型:聚集索引和非聚集索引。 1. **聚集索引**(Clustered Index): - 聚集索引决定了数据在表中的物理...

    sql索引、试图简介

    【SQL索引、试图简介】 SQL索引是数据库管理系统中用于加速数据检索的关键技术,它类似于书籍中的索引,能够帮助快速定位到所需的数据。在数据库中,索引的使用可以显著提高查询效率,尤其是在处理大量数据时。然而...

    SQL语句索引优化_sql索引降龙十八掌(Oracle)

    让我们一起领略"SQL索引降龙十八掌"的精髓。 一、了解索引 1. 索引类型: - B树索引:最常见的索引类型,适用于等值查询。 - bitmap索引:适用于多列组合查询和数据仓库场景。 - 全文索引:用于全文搜索。 - ...

    深入浅出讲解SQL索引结构

    SQL索引是数据库管理系统中用于加速数据检索的关键结构,它们极大地提高了查询性能,尤其是在处理大量数据时。本文将深入探讨SQL索引的两种主要类型:聚集索引和非聚集索引。 首先,聚集索引可以被看作是一种特殊的...

    sql索引的作用(超详细)归纳.pdf

    SQL索引是数据库管理中的一个重要概念,它能够加快数据库表中数据的检索速度。索引对于数据库系统来说相当于书的目录,有了目录,我们就能快速找到书籍中特定内容的位置,而不是一页一页地翻阅。在数据库中,索引...

    基于SQL索引优化的降龙十八掌

    【标题】:“基于SQL索引优化的降龙十八掌” 【描述】:这是一份关于SQL索引优化的重要资料,适用于面试准备,提供了宝贵的数据库优化知识。 【标签】:“SQL”、“优化”、“数据优化资料”、“数据库面试题” ...

    sql索引.docx

    SQL索引是数据库管理系统中用来加速数据检索的关键技术。当数据库中的数据量变得非常庞大时,没有索引的查询操作可能会消耗大量时间和系统资源。索引的目的是为了快速找到具有特定值的记录,减少全表扫描的时间,...

    Lucene.net与Sql索引源码

    在“Lucene.net与Sql索引源码”这个主题中,我们将探讨如何将Lucene.NET与SQL数据库集成,构建一个强大的混合搜索解决方案。 首先,让我们理解Lucene.NET的工作原理。Lucene.NET是基于倒排索引(Inverted Index)的...

    sql结构优化,sql索引优化

    sql结构优化,sql索引优化

    SQL 索引优化

    在数据库管理中,SQL索引优化是提升查询性能的关键技术之一。索引如同书籍的目录,可以帮助数据库系统快速定位和访问数据,减少全表扫描的时间,从而提高查询速度。本篇将深入探讨SQL索引的基本概念、类型、优化策略...

    sql 索引详解

    ### SQL索引详解 #### 一、索引的基本概念 索引是数据库系统为了提高查询效率而采用的一种数据结构。简单来说,索引就像是书本的目录,它可以帮助我们更快地定位到所需要的信息。 **举例说明:** 以汉语字典为例...

    SQL索引与数据完整性

    在已建立的XSCJ和TSGL数据库和表的基础上,对数据库进行操作创建索引与数据完整性,按同前的命名要求保存操作代码和截图。运用SQL2008

    SQL SEVER2000索引.ppt

    【SQL Server 2000 索引详解】 在SQL Server 2000中,索引是一种关键的数据结构,其主要目的是提高数据检索的速度。索引类似于字典的目录,它创建了一个分散存储的结构,使得数据库系统能够快速定位到所需的数据行...

    SQL修复简单数据库索引错误

    ### SQL修复简单数据库索引错误 #### 知识点概览 - **SQL Server索引基础知识** - **索引碎片化及其影响** - **使用DBCC INDEXDEFRAG进行索引重组** - **动态SQL与游标在索引维护中的应用** #### SQL Server索引...

    SQLAdvisor美团SQL索引优化建议工具

     SQLAdvisor是美团开源的一款SQL索引优化建议工具, 是由美团点评公司技术工程部DBA团队(北京)开发维护的一个分析SQL给出索引优化建议的工具。它基于MySQL原生态词法解析,结合分析SQL中的where条件、聚合条件、...

Global site tag (gtag.js) - Google Analytics