mysql(二)--索引

版权声明:本文为博主原创文章,使用请注明出处:http://blog.csdn.net/sxc1414749109 https://blog.csdn.net/sxc1414749109/article/details/79437427

索引

索引是数据库重要的一个点
建立索引的目的是加快对表中记录的查找或排序。
设置索引的代价:
一、索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大
二、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度
三、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
索引的好处:
一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。
三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

  • 基本概念

      索引是指把你设置为索引的字段A的内容储存在一个独立区间S里,里面只有这个字段的内容。在查找这个与这个字段A的内容时会直接从这个独立区间里查找,而不是去到数据表里查找。找到的这些符合条件的字段后再读取字段A所指向真实的数据记录的物理地址,再把对应的数据内容输出。如果你查找的不是索引的字段那么他会从数据表里面查找。因为数据表有很多不相关的字段,数据库程序是不会省略不查找。判断不相关的字段以及多次在记录中跳转是需要花费一定资源的。但是并不是设置越多索引就越好。因为索引都放到这个独立区间S,独立区间S越大搜索所占的资源就越大。如果你只有一个字段为索引,那么你搜索这个字段是非常快速的。

  • mysql常用索引结构
    Hash索引
      MySQL中,只有Memory(Memory表只存在内存中,断电会消 失,适用于临时表)存储引擎显示支持Hash索引,是Memory表的默认索引类型,尽管Memory表也可以使用B+Tree索引。hsah索引把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,速度非常快。当时因为是hash结构,每个键只对应一个值,而且是散列的方式分布。所以他并不支持范围查找和排序等功能。
    B+树索引
      B+tree是mysql使用最频繁的一个索引数据结构,是Inodb和Myisam存储引擎模式的索引类型。相对Hash索引,B+树在查找单条记录的速度比不上Hash索引,但是因为更适合排序等操作,所以他更受用户的欢迎。毕竟不可能只对数据库进行单条记录的操作。

  • 常见索引
    普通索引:最基本的索引,没有任何限制
    唯一索引:与”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。
    主键索引:它 是一种特殊的唯一索引,不允许有空值。
    全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间。
    组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。创建复合索引时应该将最常用(频率)作限制条件的列放在最左边,依次递减。

  • 未完待续

  • 参考

    runoob

猜你喜欢

转载自blog.csdn.net/sxc1414749109/article/details/79437427