查找每个订单的重复订单项

时间:2016-04-10 00:59:37

标签: mysql

我有一个表(订单),其中包含每个不同订单的所有订单项。 我想知道是否有任何订单上有重复的项目(模型)。

这是我的工作示例,它返回正确的值,但只查看一个订单,执行需要34秒。我需要每天查看约100个订单

SELECT ordnum, model
FROM orders
GROUP BY ordnum, model
HAVING (COUNT( * ) >1 && ordnum='1459387781')

我还有另一张表(orderinfo),如果需要使用,每条记录都是一个ordnum。

必须有一种更好的方法来查询具有31400个不同的ordnum但有130万条记录的表 任何指导?

1 个答案:

答案 0 :(得分:0)

该陈述进行全表扫描

如果你真的希望它只查询一个订单,并且该表在ordnum上有一个索引(似乎很可能),请在WHERE子句中指定,在这种情况下,'无需在ordnum中包含GROUP BY

SELECT model
FROM orders
WHERE ordnum = '1459387781'
GROUP BY model
HAVING COUNT(*) > 1

如果您"需要每天查看约100个订单" ,并且您想查看今天的订单,并且您的orderinfo表格有{{1然后执行此操作:

orderdate

如果 SELECT ordnum, model FROM orders WHERE ordnum in ( SELECT o.ordnum FROM orderinfo o WHERE o.orderdate = CURDATE() ) GROUP BY ordnum, model HAVING COUNT(*) > 1 的索引位于orderinfo orderdate的索引位于orders会非常快