请问这种sql能够优化吗?
SELECT
es.id,
es.station_name,
es.province,
es.city,
es.district,
es.detailed,
( SELECT count(*) FROM air_conditioner_equipment WHERE station_id = es.id ) AS air_conditioning_count,
( SELECT sum( cold_power ) FROM air_conditioner_equipment WHERE station_id = es.id) AS cold_power_total,
( SELECT sum( hot_power) FROM air_conditioner_equipment WHERE station_id = es.id) AS hot_power_total,
es.create_time,
es.state
FROM
energy_station es
LEFT JOIN user_station us ON us.station_id = es.id
LEFT JOIN user_info u ON u.id = us.user_id
回复
1个回答

test
2024-07-11
station_id这个字段添加索引
SELECT
es.id,
es.station_name,
es.province,
es.city,
es.district,
es.detailed,
SUM(ace.air_conditioning_count) AS air_conditioning_count,
SUM(ace.cold_power) AS cold_power_total,
SUM(ace.hot_power) AS hot_power_total,
es.create_time,
es.state
FROM energy_station es
LEFT JOIN user_station us ON us.station_id = es.id
LEFT JOIN user_info u ON u.id = us.user_id
LEFT JOIN (
SELECT station_id, COUNT(*) as air_conditioning_count, SUM(cold_power) as cold_power, SUM(hot_power) as hot_power
FROM air_conditioner_equipment
GROUP BY station_id
) ace ON ace.station_id = es.id
GROUP BY es.id;
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容