zoukankan      html  css  js  c++  java
  • 数据库 --- 索引

    一、什么是索引

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

    二、索引的分类

        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)

    [PS : MySQL数据库几个基本的索引类型:普通索引、唯一索引、主键索引、全文索引]

    三、索引的优点

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

    四、索引的缺点   

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

    五、使用索引查询一定能提高查询的性能吗?

    通常,通过索引查询数据比全表扫描要快,但是我们也必须注意到它的代价。
    索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,索引本身也会被修改。这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4、5 次的磁盘I/O。因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢,使用索引查询不一定能提高查询性能,索引范围查询(INDEX RANGE SCAN)适用于两种情况:
    1. 基于一个范围的检索,一般查询返回结果集小于表中记录数的30%。
    2. 基于非唯一性索引的检索。

  • 相关阅读:
    yum源的制作
    债券到期收益率计算公式
    IMP同库Type对象导入报错ORA-02304
    oracle自动挂掉问题分析
    CPP读取dbf文件
    oracle忘记system密码
    沪C转浙A
    业务词汇
    VS2017使用Resharp开发CPP程序
    CPP调用webservice
  • 原文地址:https://www.cnblogs.com/Xbingbing/p/8576401.html
Copyright © 2011-2022 走看看