mysql sql优化

1、创建索引,避免全表扫描
2、避免隐式转换
假设数据库中user表中字段为id的列是int类型,有如下sql,
select * from user where id = '123';
这样查询的时候会将'123'转换成123,存在隐式转换,会影响到查询时间
3、分页优化
普通写法:
select * from buyer where sellerId = 100 limit 100000, 5000;
普通limit M, N的翻页写法,在越往后翻页的过程中速度会越慢,原因是mysql会读取表中前M+N条数据,M越大,性能就越差!
优化写法:
select t1.* from buyer t1,
    (select id from buyer where sellerId = 100 limit 100000, 5000) t2
  where t1.id = t2.id;
注意:需要在buyer表的sellerId字段上创建索引,id为表的主键。
4、子查询优化
典型子查询:
select first_name from employees where emp_no IN
    (select emp_no from salaries where salary = 5000);
Mysql的处理逻辑是遍历employees表中的每一条记录,带入到子查询中去。
改写的子查询:
select first_name from employees emp,
    (select emp_no from salaries where salary = 5000) sal
  where emp.emo_no = sal.emp_no;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值