实习问题记录
公司项目已经开发很久了,今天发现有一条sql在执行了增删改之后查询的速度异常的慢,通过控制台看到这条sql执行的时间如下
sql如下:
SELECT avsa.id,
avsa.voucher_id,
avsa.abstract_id,
avsa.subject_id,
avsa.subject_name,
avsa.subject_import_money,
avsa.balance_direction,
avsa.subject_balance_direction,
avsa.subject_import_amount,
avsa.unit_price,
avsa.currency_id,
avsa.chapter,
avsa.abstract_content,
avsa.aid
FROM
act_voucher_subject_amount AS avsa
LEFT JOIN act_voucher_import AS avi ON avi.id = avsa.voucher_id
WHERE
avsa.is_deleted = 0
AND avi.is_deleted = 0
AND avi.client_id = 1705064918767923201
ORDER BY
avsa.create_time ASC
在未执行增删改之前的速度是很快的
执行增删改之后这个速度太慢了
通过查询sql执行时间占比,找到了原因是在大量数据的表中进行了order by的原因
将sql的order by去掉之后
执行时间得到巨大改善
总结
另外遇到的一些sql问题查询慢的解决办法,一定一定要避免掉*查询,避免掉不需要使用到的字段,需要哪些字段就只查哪些字段,好像字段超过10条速度就会变慢吧~ 我也不清楚,经常去掉几个字段之后速度就变快