请问这种sql能够优化吗?

作者站长头像
站长
· 阅读数 11
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个回答
avatar
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;
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容