一次sqlserver千万级数据表join时group分组时优化查询速度的记录

2020-05-13

value_meter_instant表2000万数据,value_meter_equip_region2表2000数据

SELECT i.EQID,SUM(tx_v) as tx_v
FROM
    value_meter_instant i
    INNER JOIN value_meter_equip_region2 r ON r.EQID = i.EQID 
WHERE
    sort = '$regs' AND areaid = $areaid AND i.EQTime BETWEEN '2020-05-12 00:00:00' AND '2020-05-13 00:00:00' 
GROUP BY
    i.EQID

语句执行时间在9-10秒之间
SELECT r.EQID,SUM(tx_v) as tx_v
FROM
    value_meter_instant i
    INNER JOIN value_meter_equip_region2 r ON r.EQID = i.EQID 
WHERE
    sort = '$regs' AND areaid = $areaid AND i.EQTime BETWEEN '2020-05-12 00:00:00' AND '2020-05-13 00:00:00' 
GROUP BY
    r.EQID

语句执行时间在1秒左右

得出一个结论,当两个表关联group时,以数据量少的表为基准,可以大幅度提高查询速度

{/if}