在3个表之间快速查询mysql
帮我,伙计们,如何让我的查询更快在3个表之间快速查询mysql,mysql,Mysql,帮我,伙计们,如何让我的查询更快 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 GR
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;
几乎可以肯定的是,将
联接到SUM
s的表中比为每行运行两个子查询更有效:
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\u barang
列上都有索引也将有助于提高性能。向我们展示一些示例表数据和表结构-全部为格式化文本。谢谢,,但此获取错误代码:1054“on子句”中的未知列“bk.id_barang”执行时间:00:00:00:000传输时间:00:00:00:000总时间:00:00:00:00:000@CeceSyamsulHadi很抱歉,我无法测试查询,因为我没有任何示例数据。我做了一个更正,应该能解决那个问题。