文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-04-06 20:15

关注

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯