MySQL索引创建与使用

1.what is 索引?
索引是一种对数据库表中一列或多列的值进行排序的数据结构,类似于目录,用来方便查询,帮助我们快速进行数据查找
2.索引是什么样一种数据结构?
不同的存储引擎所使用的索引结构不同。常用的索引数据类型用B+树索引,hash索引,InnoDB存储引擎所使用的就是B+树索引。
3.索引的优缺点?
索引可以加快数据库检索速度,但同时降低插入、修改、删除等对数据维护速度(因为需要对索引进行更新,假如给age列增加了索引,age=5修改成了age=8,因为age列有索引,所以会对age列进行排序,值改变很有可能会造成索引的改变,加长了数据修改时间),占用物理和数据空间
4.常用的索引类型?
按列属性划分,索引可分为单列索引和组合索引

  • 单列索引:以表中的一个列字段创建索引
  • 组合索引:以表中的多个列字段组合创建索引

同时,索引又可以分成普通索引、主键索引、唯一索引、全文索引

  • 普通索引:非主键、非唯一列的索引,仅用来加快查询速度
  • 唯一索引:非主键,但不允许创建该索引的列有重复的值,可以为null
  • 主键索引:为表创建主键,将自动创建主键索引,主键索引是唯一索引的一种特殊类型,主键索引不仅加快查询速度还要求主键唯一且不为null
  • 全文索引:对文本内容进行分词,进行搜索,用于对一篇文章进行查找,在大量级的文本信息中,使用like %关键词%效率比普通索引要快

在这里插入图片描述

5.索引的创建
单列索引

alter table 表名 add index(列名)

组合索引

alter table 表名 add index(列名1,列名2)

在这里插入图片描述
6.什么时候需要创建索引?

  1. 在经常需要查询的列创建索引,提高查询效率
  2. 一般表的主键和外键都需要创建索引,因为主键外键查询都比较多
  3. 在经常需要根据范围查询的列创建索引,因为索引已经进行了排序,指定的范围是连续的,查询时效率更高
  4. 索引应该创建在小字段,对于大字段(较长的文本字段)则不适合创建索引
  5. 在经常需要排序的列上创建索引,这样就可以使用索引的排序,加快查询时间
  6. 在经常出现在where子句中的列上创建索引,这样可以加快条件的判断速度

7.什么时候不需要创建索引?

  1. 对于在查询中很少使用的列不应该创建索引,索引不是只有优点,也会带来缺点

  2. 对于增删比较频繁的列(修改大于查询)

  3. 对于只有很少数据值的列,如性别,性别只有男女,即使使用索引,查询速度也无异于全表扫描

8.什么条件下索引失效?

  1. 查询中有 like % 时,相当于全表扫描
  2. 检索字段进行是否为空判断时,如select id from user where age=null
  3. 使用not in 、not exits 、!=时 ,例如select id from user where age in(21,22,23)
  4. 对索引运算导致索引失效,例如select*from test where id-1=9
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值