从重复项中仅选择最新行(效率重要,大表)

时间:2018-12-19 15:12:45

标签: mysql duplicates large-data

SELECT *
FROM epc e
INNER JOIN epc max_
ON e.ADDRESS1 = max_.ADDRESS1
   AND e.POSTCODE = max_.POSTCODE
   AND e.INSPECTION_DATE < max_.INSPECTION_DATE;

我有一个包含1300万行的表。如果没有AND e.INSPECTION_DATE < max_.INSPECTION_DATE,它的返回速度很快,但是非常慢。

我已经在INSPECTION_DATE创建了索引,并且还在ADDRESS1,POSTCODE和INSPECTION_DATE上创建了一个复合索引,以查看其中任何一个都可以使用,但是仍然很慢。我确定我离开了它一次,并且返回了“返回的0行”,但是在sqlfiddle中,它似乎删除了重复项并保留了最新的 confused

我的主要目的是从数据库中删除所有重复的行,其中ADDRESS1和POSTCODE相同,而保留表中基于INSPECTION_DATE的最新行。

0 个答案:

没有答案