MySQL索引知识

MySQL索引

笔记部分

查看一张表的索引信息

show keys from $tableName;
show index from $tableName;

索引结构

  • 哈希索引

适合快速查找一个具体的值,但是不适合排序,范围查找。

  • 二叉树索引

适合排序,范围查找。

注意,这里是索引的结构,对应的索引类型可以选择不同的索引结构。

索引类型

  • 主键索引:特殊的唯一索引
  • 唯一索引
  • 全文索引
    • 一些常用的单词或者字母组合不能搜索,具体看官网。
    • 默认不支持中文,但是可以通过安装插件来实现。
    • 如果全文索引中设置了多个字段的话,那么match的时候就需要全部的字段,不能设置单个字段
    • 仅对MyISAM存储引擎生效
select $field from $tableName where match ($field) against ($world);
  • 普通索引
  • 空间索引:很少用,用到的时候再说。

索引使用

  • select时:选择索引外的字段时,索引失效。
  • where时:有索引的字段就行,但是联合索引时(索引不止一个字段,包含多个字段,不是特殊的索引类型),以下情况将失效。
index $field1,$field2,$field3,$field4

搜索时

// 以下搜索时索引生效
$field1
$field1,$field2
$field1,$field2,$field3
// 以下索引将失效
$field2
$field2,$field3
// 简单来说就是一定要讲顺序

一些联合操作也可以使用索引,但是注意顺序,举个例子:

// index:first_name,last_name
select * from users where first_name!='A' and last_name =='B' group by fisrst_name;// 使用索引了
select * from users where first_name!='A' and last_name =='B' group by last_name;// 没有使用索引

索引是first_name,last_name,跟上面的规则一样,first_name,first_name,last_name的顺序是可以的,last_name是不行的。

问题

  • 索引有哪些结构,分别适合什么场景?
  • 索引有哪些类型,主要功能是什么?
  • 索引使用时有什么规则?和一些常见的联合操作group by,min,max等的关系是怎样的?

思考

抛开索引的具体的规则,索引就是目录的功能,比如你的表是users

idfirst_namelast_name
1AD
2AD
3BC

如果你没有为fist_name创建索引,那么当你执行

select * from users where first_name='A';

时,mysql会去遍历表数据,但是当你为first_name创建索引时,会先去查询first_nameA

索引,接着根据索引获取数据,这就是两者的区别。

但是一般1年多的web开发人员由于对索引知识的欠缺,经常建一些缺少索引的表,后期对这些表查询时,可以使用新建索引进行优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值