4.2.2 MySQL索引原理以及SQL优化

预处理语句
将SQL语句分离成两个部分,准备和执行
准备 将SQL语句发送给服务器进行解析,编译和优化 生成一个执行计划并缓存
执行 将传递过来的参数作用在缓存好的查询计划再执行
优点:
1.减少重复解析和编译
2.防止SQL语句注入,避免拼接字符串而导致SQL注入

索引是什么?
一种有序的存储结构
按照单个或者多个列的值进行排序
索引的目的:提升搜索效率
索引分类:主键索引、唯一索引、普通索引、组合索引、以及全文索引

索引分类:
数据结构:B+树索引、hash索引、全文索引(根据关键字索引全局)
物理存储:聚集索引、辅助索引(二级索引)
在innodb中,主键索引的B+树包含表数据信息。

B+树
全称:多路平衡搜索树,减少磁盘访问次数,用来组织磁盘数据,以页为单位,物理磁盘页一般为4k,innodb默认页大小为16k,对页的访问是一次磁盘io,缓存中会缓存常访问的页。
特点:非叶子节点只存储索引信息,叶子节点存储具体数据信息,叶子节点之间互相连接,方便范围查询。每个索引对应着一个b+树。

列属性:主键索引、唯一索引、普通索引、前缀索引
列的个数:单列索引、组合索引

索引的代价:占用空间,维护的代价。一张表不能维护多张表,DML操作变慢

索引的使用场景:where、group by、order by
不要使用索引场景:没有where/group by/order by中使用,区分度不高的列,经常修改的列,表数据量少

主键选择:
innodb中表是索引组织表,每张表有且仅有一个主键。
1.如果显示设置PRIMARY KEY,则该设置的key为该表的主键。
2.如果没有显示设置,则从非空唯一索引中选择:
a. 只有一个非空唯一索引,则选择该索引为主键。
b. 有多个非空唯一索引,则选择声明的第一个为主键。
3.没有非空唯一索引,则自动生成一个6字节的_rowid作为主键。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高二的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值