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的最新行。