索引index(1)

索引本身是一个独立的存储单位,在该单位里边有记录着数据表某个字段和字段对应的物理空间。

如下:
这里写图片描述

有了索引,我们根据索引为条件进行数据查询速度就非常快

  • 索引本身有”算法”支持,可以快速定位我们要找到的关键字(字段)
  • 索引字段与物理地址有直接对应,帮助我们快速定位要找到的信息,一个数据表的全部字段都可以设置索引

索引类型

四种类型:

类型英文名含义
主键primary keyauto_increment必须给主键索引设置,信息内容要求不能为null且唯一
唯一unique index信息内容不能重复
普通index没有具体要求
全文fulltext indexmyisam数据表可以设置该索引

复合索引:索引关联的字段是多个组成的,该索引就是复合索引。
例:

  • 创建复合索引:
    这里写图片描述
    这里写图片描述
  • 删除主键索引

先去除主键字段的auto_increment属性

这里写图片描述

执行计划explain

  • 当前数据库只有查询语句支持执行计划。
  • 每个select查询sql语句执行之前,需要把该语句需要用到的各方面资源都计划好
    例如:cpu资源、内存资源、索引支持、涉及到的数据量等资源
  • 查询sql语句真实执行之前所需要的资源计划就是执行计划。

我们讨论的执行计划,就是看看一个查询sql语句是否可以使用上索引。

例:(使用了索引)
这里写图片描述
比较:(未使用索引)
这里写图片描述

适合场景

  • where 之后设置的查询条件字段都适合做索引。
  • order by 字段 //排序字段适合做索引

例:

排序字段没有索引,做排序查询就没有使用:

这里写图片描述

给排序字段设置索引,做排序查询就会使用:

这里写图片描述

  • 连接查询中给外键/约束字段设置索引,也可以提高联表查询的速度
索引覆盖

例:

给ename和job设置一个复合索引:

这里写图片描述
这里写图片描述

我们查询的全部字段(ename,job)已经在索引里边存在,就直接获取即可,不用到数据文件中再获取了,该查询速度非常快,效率高,该索引也称为”黄金索引”:

这里写图片描述

索引缺陷:索引本身需要消耗空间存储且升级维护困难

索引原则

字段独立原则
select * from emp where  empno=1325467;  #empno条件字段独立
select * from emp where  empno+2=1325467; #empno条件字段不独立

条件字段独立可以使用索引:

这里写图片描述

条件字段不独立不可以使用索引:

这里写图片描述

两者的时间比较:

这里写图片描述

左原则

模糊查询中,特殊占位符的使用:

  • %:关联多个模糊内容
  • _:关联一个模糊内容
select * from 表名  like  "beijing%";  #使用索引
select * from 表名  like  "beijing_";  #索引索引

查询条件信息在左边出现,就能使用索引

XXX%    YYY_  使用索引
%AAA%   _ABC_   %UUU 不使用索引

中间条件查询(没有使用索引):

这里写图片描述

右边条件查询(没有使用索引):

这里写图片描述

左边条件查询(使用索引):

这里写图片描述
这里写图片描述

复合索引内部有两个字段(ename,job)

  • ename(前者字段)作为查询条件可以使用复合索引
  • job(后者字段)作为查询条件不能使用复合索引

复合索引的第一个字段可以使用索引:

这里写图片描述

复合索引的其余字段不能使用索引:

这里写图片描述

如果第一个字段的内容已经确定好,第二个字段也可以使用索引:

这里写图片描述

OR原则

or左右的关联条件必须都具备索引 才可以使用索引:

这里写图片描述
这里写图片描述

or的左右,只有一个有索引,导致整体都没有的使用:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值