MySQL架构原理及优化
索引原理
架构
MySQL查询执行过程
客户端向MySQL服务器发送一条查询请求
服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段
服务器进行SQL解析、预处理、再由优化器生成对应的执行计划
MySQL根据执行计划,调用存储引擎的API来执行查询
将结果返回给客户端,同时缓存查询结果
优化
- MySQL 不会在
非独立列使用索引
,即 where 后查询条件不能是表达式的一部分
或不能是函数的参数
- 列很成,使用
前缀索引
,节省索引空间,提高索引效率 - 多列索引和索引顺序
- 当出现多个索引做相交操作时(多个AND条件),通常来说一个包含所有相关列的索引要优于多个独立索引。
- 当出现多个索引做联合操作时(多个OR条件),对结果集的合并、排序等操作需要耗费大量的CPU和内存资源,特别是当其中的某些索引的选择性不高,需要返回合并大量数据时,查询成本更高。所以这种情况下还不如走全表扫描
- 避免多个范围条件,多个范围条件
无法同时使用索引
,即索引失效 - 避免索引的
冗余与重复
- 删除长期未使用的索引
相关推荐
moyekongling 2020-11-13
liuweiq 2020-09-09
ribavnu 2020-11-16
要啥自行车一把梭 2020-11-12
vitasfly 2020-11-12
康慧欣 2020-09-10
Ida 2020-09-16
CoderToy 2020-11-16
emmm00 2020-11-17
王艺强 2020-11-17
bianruifeng 2020-11-16
wangshuangbao 2020-11-13
苏康申 2020-11-13
vivenwan 2020-11-13
云中舞步 2020-11-12
aydh 2020-11-12
kuwoyinlehe 2020-11-12
minerk 2020-11-12