MySQL索引及优化的知识点有哪些

发布时间:2023-03-30 16:23:10 作者:iii
来源:亿速云 阅读:119

这篇文章主要介绍“MySQL索引及优化的知识点有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL索引及优化的知识点有哪些”文章能帮助大家解决问题。

索引是什么?

索引的结构?

索引可以有B-Tree索引,Hash索引。索引是在存储引擎中实现的

InnoDB / MyISAM 仅支持 B-Tree索引

Memory/Heap 支持B-Tree索引和Hash索引

MySQL索引及优化的知识点有哪些

MySQL索引及优化的知识点有哪些

InnoDB中一个页的大小为16KB(一个页即B+树上的一个节点),若表的主键为INT,大小为4字节,那一个节点也能够存储4K个键值,假设指针和键值都占相同大小,那么高度为3的B+树,第二层有2048个节点,第三层的叶子节点数为2048*2048 = 4194304,一个节点为16KB,则一共可容纳67108864KB,即65536MB,即64G的数据。

由于叶子节点是被一个链表串起来的,所以若order by 索引列,则默认已经是排好序的,所以效率会很高。

MySQL索引及优化的知识点有哪些

MyISAM的辅助索引和主键索引一样,唯一的区别是,辅助索引中的key可以重复,而主键索引的key不能重复

MySQL索引及优化的知识点有哪些

 InnoDB的辅助索引,叶子节点中存的是主键值,而不是地址。走辅助索引,需要检索2次。

MySQL索引及优化的知识点有哪些

InnoDB和MyISAM索引的区别:

问题

索引存在哪儿?

索引的优缺点?

索引的分类

 索引使用

 CREATE INDEX index_name ON table_name(col_name);
-- 或者
ALTER TABLE table_name ADD INDEX index_name(col_name)
DROP INDEX index_name ON table_name;

explain执行计划

现有一张user表,其索引如下所示

MySQL索引及优化的知识点有哪些

其中name,age,address 三个字段作为一个组合索引

可以使用explain对某个SQL语句进行性能分析

explain select * from user where name = 'am';

MySQL索引及优化的知识点有哪些

possible_keys
可能用到的索引
key
实际用到的索引
key_len
用于查询的索引的长度
ref
如果是等值查询,这里会会是const
rows
预计需要扫描的行数(不是精确值)
extra

额外信息,如

MySQL索引及优化的知识点有哪些

type

MySQL索引及优化的知识点有哪些

下面是满足了最左前缀规则,即对idx_name_age_add来说,满足了最左前缀,第一个索引为name

MySQL索引及优化的知识点有哪些

MySQL索引及优化的知识点有哪些

MySQL索引及优化的知识点有哪些

注意like时,通配符%不能放在开头,否则会导致全表扫描

MySQL索引及优化的知识点有哪些

MySQL索引及优化的知识点有哪些

MySQL索引及优化的知识点有哪些

索引使用规范(索引失效分析)

  1. 全值匹配
    在索引列上使用等值查询

explain select * from user where name = 'y' and age = 15;

MySQL索引及优化的知识点有哪些

2. 最左前缀

组合索引中,查询条件要从组合索引的最左列开始,如上述example中组合索引idx_name_age_add,是建立在三个列name,age,address的,若跳过name,直接用age查询,则会变为全表扫描

explain select * from user where age = 15;

MySQL索引及优化的知识点有哪些

3. 不要在索引列上做计算

4. 范围条件右侧的索引列会失效

MySQL索引及优化的知识点有哪些

看到第一个SQL语句,没有用上addresss索引

5. 尽量使用覆盖索引

explain select name,age from user where name = 'y' and age = 1;

可以避免回表查询

6. 索引字段不要使用不等(!= 或 <>),不要判断null(is null/ is not null)
会导致索引失效,转为全表扫描

MySQL索引及优化的知识点有哪些

MySQL索引及优化的知识点有哪些

7. 索引字段上使用like时,不要以%开头

MySQL索引及优化的知识点有哪些

8. 索引字段如果是字符串,记得加单引号

MySQL索引及优化的知识点有哪些

9. 索引字段不要用or

MySQL索引及优化的知识点有哪些

例子总结:

MySQL索引及优化的知识点有哪些

关于“MySQL索引及优化的知识点有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

推荐阅读:
  1. MySQL优化提高效率的方法
  2. MySQL中TO_DAYS函数怎么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:mybatisplus中insertBatchSomeColumn批量添加的方法是什么

下一篇:C++类中三大函数是什么及怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》