1 不用 select *
2 用 union all 替代 union
3 小表驱动大表
in 适用于左边大表,右边小表;exists 适用于左边小表,右边大表
假如有 order 和 user 两张表,其中 order 表有10000条数据,而 user 表有100条数据。
快:
select * from order
where user_id in (select id from user where status=1)
慢:
select * from order
where exists (select 1 from user where order.user_id = user.id and status=1)
4 多用 limit
5 高效分页
慢:
select id,name,age
from user limit 1000000,20;
快:
select id,name,age
from user where id > 1000000 limit 20;
6 尽量使用 where 替换 having
having 中的条件一般用于聚合函数的过滤,where 后面不能使用组函数
7 使用连接代替子查询
8 join 连接表尽量不超过三张
left join :求两个表的交集+左表剩下的数据,左边要小表,右边要大表
right join:求两个表的交集+右表剩下的数据,右边要小表,左边要大表
inner join:求两个表交集的数据
9 count(*)>count(1)>count(字段)
10 使用 truncate 代替 delete
结语
最后本文章如果对您有一点点帮助的话,求赞 求收藏 求关注,您的支持是我创作的最大动力!
文章粗浅,希望对大家有帮助!