从商店MYSQL性能获取最新记录

时间:2013-11-25 20:17:46

标签: php mysql sql

我想知道你们是否可以帮助解决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    

我尝试过不同的加入订单,这是一个运行速度更快的订单,我想知道您是否可以帮助我解决性能问题,或者是否有更好的方法可以帮助我。

1 个答案:

答案 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;

您的销售加入无效