MySQL索引篇,索引的优缺点,分类及设计原则

为什么要使用索引

索引在数据库中的作用是快速找出某个列中一个特定值的行,不使用索引的话,MySQL必须从第一条记录遍历到相关行,表越大,花费的时间越多,但是如果有索引,就能快速的到达某个位置去搜索数据文件,索引对于优化数据库查询速度有着不可替代的作用。

索引的优点
  1. 通过创建索引,可以保证数据库中每一条数据的唯一性

  2. 可以大大提高查询的效率

  3. 可以加速表与表之间的连接

  4. 可以显著的减少查询中分组和排序的时间

    总结:查询速度快

索引的缺点
  1. 创建索引和维护索引需要时间,而且数据量越大时间越长

  2. 创建索引占用磁盘空间,如有大量索引,可能比数据文件更快达到最大文件尺寸

  3. 对表中的数据进行增加、修改、删除的时候,索引也要同时维护,降低了数据的维护速度

    总结:维护效率低

索引的分类
  1. 普通索引(Normal): 基本索引类型,允许在定义索引的列里插入空值或重复值。
  2. 唯一索引(Unique): 索引列值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。主键索引是一种特殊的唯一索引,不允许有空值。
  3. 单列索引: 只包含一个列的索引,一个表中可以有多个。
  4. 组合索引: 包含多个列的索引,查询条件包含这些列的最左边的字段的时候,索引就会被引用,遵循最左缀原则。
  5. 全文索引(Full Text): 在定义的值中支持全文查找,允许空值和重复值,可以在CHAR,VARCHAR或者TEXT字段类型上创建,仅支持MyISAM存储引擎。
  6. 空间索引: 针对空间数据做的索引,支持的数据类型有4种,分别是GEOMETRY,POINT,LINESTRING和POLYGON。创建空间索引的列必须声明为非空值(NOT NULL),仅支持MyISAM存储引擎。
索引设计原则
  1. 不是越多越好

  2. 常更新的表越少越好

  3. 数据量小的表最好不要建立索引

  4. 不同的值比较多的列才需要建立索引

  5. 某种数据本身具备唯一性的时候,建立唯一性索引,可以保证定义的列的数据完整性,以提高查询熟度

  6. 频繁进行排序或分组的列(group by或者是order by)可以建立索引,提高搜索速度

  7. 经常用于查询条件的字段应该建立索引

    总结:够用就好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值