快速查询3个表之间的mysql

问题描述 投票:0回答:1

帮助我们,如何更快地进行查询

SELECT b.id_barang
     , b.nama
     , ( SELECT SUM(qty) FROM baru_kasir WHERE k.id_barang = b.id_barang GROUP BY b.id_barang LIMIT 1) 
     - ( SELECT SUM(qty) FROM barang_gdg_pesan WHERE barang_gdg_pesan.id_barang = b.id_barang GROUP BY b.id_barang LIMIT 1 ) AS STOCK

  FROM baru_barang b 
 WHERE stts = 'AKTIF' 
 ORDER 
    BY b.nama ASC;
mysql
1个回答
1
投票

JOINSUMs的表几乎肯定会更有效,而不是为每一行运行两个子查询:

SELECT bb.id_barang,
       bb.nama, 
       bk.qty - bgp.qty AS stock
FROM baru_barang bb
JOIN (SELECT id_barang, SUM(qty) AS qty
      FROM baru_kasir 
      GROUP BY id_barang) bk ON bk.id_barang= bb.id_barang
JOIN (SELECT id_barang, SUM(qty) AS qty
      FROM barang_gdg_pesan
      GROUP BY id_barang) bgp ON bgp.id_barang = bb.id_barang 
WHERE stts='AKTIF'
ORDER BY bb.nama ASC;

确保每个表中的id_barang列都有索引也有助于提高性能。

© www.soinside.com 2019 - 2024. All rights reserved.