mysql 索引优化(二)

本文主要探讨了MySQL的索引优化,包括联合索引、Limit查询优化、Inner join和in/exists的优化策略。此外,还提到了常见的优化方法,如查询数据库维护的总行数、使用show table status等。同时,文章介绍了索引规约,强调了选择正确数据类型的重要性,以及在处理数字、时间、字符串时的优化建议。
摘要由CSDN通过智能技术生成

如基于联合索引来优化:(name,age,position)

Limit查询优化:

1. 根据自增且连续的主键排序的分页查询

EXPLAIN SELECT * FROM employees where limit 9000 ,5 ;  //执行效率慢

EXPLAIN SELECT * FROM employees where id >9000 limit 5  //相对执行快

2、根据非主键字段排序的分页查询

mysql>EXPLAIN select * from employees ORDER BY name limit 90000,5;

排序时返回的字段尽可能少,所以可以让排序和分页操作先查出主键,然后根据主键查到对应的记录,如下优化:

mysql> select * from employees e inner join (select id from employees order by name limit 90000,5) ed on e.id = ed.id;

Inner join的优化:

Inner join:表关联原则:小表驱动大表,大表最好走索引

1. 嵌套循环连接Nested-Loop Join(NLJ)算法 (在t1和t2表中a都是设置为索引的,且t1表中数据非常多,t2表数据比较少)

mysql> EXPLAIN select * from t1 inner join t2 on t1.a= t2.a;

一次一行循环地从第一张表(称为驱动表)中读取行,在这行数据中取到关联字段,根据关联字段在另一张表(被驱动表)里取出满足条件的行,然后取出两张表的结果合集。

2. 基于块的嵌套循环连接Block Nested-Loop Join(BNJ)算法(在t1和t2表中b没有设置为索引的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

长情知热爱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值