在当前情况下,“我的数据库”存储每个用户订单项目,其中一个订单有多个项目,而所有项目将具有相同的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的主要顺序,状态应为“有效” ,'取消' ,“送达” ,“无效”
需要优化才能替代