我想知道你们是否可以帮助解决MYSQL中的查询问题。 我有一张销售桌,一个钱箱桌和一张商店桌,我需要获得每家商店的最后一次销售。
Sales ----- #ID Sale //UNIQUE RANDOM IDENTIFIER NOT SEQUENTIAL #FK Cashbox Date Amount Cashbox ------- #ID Cashbox FK Store Number Store ------- #ID Store Name
所以基本上在销售表中报告了销售日期和现金箱的数量,我需要按照我在每家商店的最后一次销售前说的那样,我面临的问题是我运行的查询太慢(大约6秒),因为(我认为)与sales表的连接贯穿整个表,并且它有200万条记录。
这是我的查询:
SELECT st.name,MAX(s.date) as date
FROM store st
JOIN cashbox c ON c.id_store = st.id_store
JOIN sales s ON s.id_cashbox = c.id_cashbox AND c.id_store = st.id_store
GROUP BY st.id_store
ORDER BY date DESC;
//修正了拼写错误 // EXPLAIN
ID select_type table type possible_keys key key_len ref rows extra
1 SIMPLE t index PRIMARY,id_store PRIMARY 4 (null) 443 Using where; Using temporary; Using filesort
1 SIMPLE c ref FK_id_cashbox,FK_id_store FK_id_tienda 4 pb.t.id_store 1 Using index
1 SIMPLE v ref id_cashbox id_cashbox 4 pb.c.id_cashbox 2011
我尝试过不同的加入订单,这是一个运行速度更快的订单,我想知道您是否可以帮助我解决性能问题,或者是否有更好的方法可以帮助我。
答案 0 :(得分:0)
SELECT st.name,MAX(s.date) as date
FROM store st
JOIN cashbox c ON c.id_store = st.id_store
JOIN sales s ON c.id_cashbox = s.id_cashbox
GROUP BY st.id_store
ORDER BY date DESC;
您的销售加入无效