优化mysql

时间:2019-03-26 09:16:34

标签: 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的主要顺序,状态应为“有效”                                      ,'取消'                                      ,“送达”                                      ,“无效”

需要优化才能替代

0 个答案:

没有答案