1. 创建索引:在artb_charge_record表中,为company_code、serial_number、archive、state、heating_year、advance_gold这些字段创建索引,可以加快查询速度。

  2. 避免使用子查询:将子查询转化为连接查询,可以减少查询次数,提高效率。

  3. 筛选数据:在查询之前,先筛选出advance_gold不为null且不为0的数据,可以减少查询数据量,提高效率。

  4. 分批查询:如果artb_charge_record表数据量较大,可以根据heating_year的范围分批查询,可以减少查询数据量,提高效率。

优化后的SQL语句如下:

SELECT SUM(acr.advance_gold) AS tb_last_surplus FROM artb_charge_record acr JOIN atr ON acr.company_code = atr.company_code AND acr.serial_number = atr.serial_number WHERE acr.archive = 0 AND acr.state = 0 AND acr.advance_gold IS NOT NULL AND acr.advance_gold != 0 AND acr.heating_year > atr.heating_year AND acr.company_code = 'xxx' AND acr.serial_number = 'xxx' AND acr.heating_year BETWEEN xxx AND xxx;

其中,xxx为具体的数值

这条sql如何优化 select sumadvance_gold from artb_charge_record where company_code = atrcompany_code and serial_number = atrserial_number and archive = 0 and state = 0 and atrheating_year heating_year and a

原文地址: https://www.cveoy.top/t/topic/eN6J 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录