sql常见调优方法
1个回答
展开全部
一、索引方面
1.在where、order by、group by条件后的字段添加索引,为经常查询的字段添加索引。
2.能使用覆盖索引尽量使用覆盖索引,同时用 select 具体字段代替 select *。
3.检查sql语句查询时是否遵循了最左匹配原则。
4.对索引进行查询时不能对在 = 左侧进行运算,或者使用sum、avg等符合函数,会导致索引失效。
二、查询方式
1.避免使用‘%like%’语句,可以使用‘like%’.
2.查询条件不能带null查询,会导致全表扫描.
三、业务角度
1. 大批量查询时可以保存上一次查询的last insert id,使用 id > last insert id来查询。
2. 不得不使用in条件时,如果in后面数据量很多,有可能会走全表扫描;可以考虑采用分批in + 多线程的方式.
3. 当查询不得不返回所有字段是,可以考虑使用 join on 子查询的方式;即先查出符合条件的主键id 列表(必定会走覆盖索引),再通过select * jion 临时表,该方法往往能降低不少时间效果,同时在深分页时也可以考虑采用这种方法。
四、DBA角度
1.磁盘性能
2.max_length_for_soft_data 与 sort_buffer_size,双路排序与单路排序的不同。
1.在where、order by、group by条件后的字段添加索引,为经常查询的字段添加索引。
2.能使用覆盖索引尽量使用覆盖索引,同时用 select 具体字段代替 select *。
3.检查sql语句查询时是否遵循了最左匹配原则。
4.对索引进行查询时不能对在 = 左侧进行运算,或者使用sum、avg等符合函数,会导致索引失效。
二、查询方式
1.避免使用‘%like%’语句,可以使用‘like%’.
2.查询条件不能带null查询,会导致全表扫描.
三、业务角度
1. 大批量查询时可以保存上一次查询的last insert id,使用 id > last insert id来查询。
2. 不得不使用in条件时,如果in后面数据量很多,有可能会走全表扫描;可以考虑采用分批in + 多线程的方式.
3. 当查询不得不返回所有字段是,可以考虑使用 join on 子查询的方式;即先查出符合条件的主键id 列表(必定会走覆盖索引),再通过select * jion 临时表,该方法往往能降低不少时间效果,同时在深分页时也可以考虑采用这种方法。
四、DBA角度
1.磁盘性能
2.max_length_for_soft_data 与 sort_buffer_size,双路排序与单路排序的不同。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询