首页 > 解决方案 > 优化mysql的查询

问题描述

在当前场景中,我的数据库存储每个用户订单项目,其中一个订单有多个项目,所有项目将具有相同的 orderNumber。我对mysql没有太多经验。但我修改了默认搜索查询以通过 auditTimestamp 获取订单。由于用户可以编辑订单项目,这将更新单个产品的 auditTimestamp。

我之前创建了一个内部查询来迭代所有订单,然后按它们分组,然后使用 MAX 函数获取最新的 auditTimestamp。目前我需要优化它。下面是示例。我需要优化内部连接的地方。

select
   distinct ORDER.ORDERID
           ,ORDER.ORDERNUMBER
           ,ORDER.CREATIONDATE
           ,ORDER.STATUS  
           ,ORDER.AUDITTIMESTAMP
           ,ORDER.USERID
           ,ORDER.SEQ
           ,maxaudit.maxaudittimestamp as maxaudittimestamp
  from
   ORDER  as ORD
   INNER JOIN (select
               ORDER.ORDERID
                ,ORDER.ORDERNUMBER
                ,ORDER.CREATIONDATE
                ,ORDER.STATUS  
                ,ORDER.AUDITTIMESTAMP
               ,ORDER.USERID
               ,ORDER.SEQ
               ,MAX(ORD1.AUDITTIMESTAMP) maxaudittimestamp
               from
                ORDER ORD1
               where
                ORD1.USERID = 1 AND
                ORD1.STATUS IN ('Active'
                                     ,'CANCELLED'
                                     ,'OUT FOR DELIVERY'
                                     ,'Void')
               GROUP BY
                ORD1.ORDERNUMBER) maxaudit
     on maxaudit.ORDERID = ORD.ORDERID
  WHERE
   WAR.ORDERID = 1) ORRDATA
   WHERE 1 = 1 AND
 ,ORDER.SEQ = 1
ORDER BY
 ORRDATA.maxaudittimestamp DESC;

结果我需要按用户获取所有订单并首先按最新排序。但其 seq = 1 的主顺序,状态应为 'Active' ,'CANCELLED' ,'OUT FOR DELIVERY' ,'Void'

更换所需的优化

标签: mysql

解决方案


推荐阅读