sql调优总结

1.用union all 代替union
sql中用union来进行数据的联合,使用union得到的数据是进行去重之后的,去重是是很占用资源的,所以尽量使用union all。如果必须要不能出现重复数据的场景,用union

2.数据查询应有小表驱动大表
就是用小的数据集驱动大的数据集


left join :左边为驱动表(小表),右边为被驱动表(大表)
right join :右边为驱动表(小表),左边为被驱动表(大表)


IN:
SELECT NAME FROM A WHERE ID IN (SELECT ID FROM B)
Exists:
SELECT NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.ID = A.ID)


两者均可查询相同结果,但是在运用时,如果B表的数据较少时,我们优先使用IN来查询数据;如果A表的数据较少时,我们优先使用Exists进行查询

 

3.分页查询可能出现的问题:
查询的数据太多的话,用limit就会很不合适
列如
select *
from table limit 10000000,5;
这是mysql会查询到10000005条数据,然后再把之前的10000000条数据进行丢弃,只保留需要的5条数据,这样的查询效率很差。

 

优化方式:
select *
from table where id > 10000000 limit 5;

 

4.索引优化
防止索引失效等

posted @ 2023-10-09 18:13  月落天白,船动莲开  阅读(23)  评论(0)    收藏  举报