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;
У меня есть таблица с 13 миллионами строк.Без AND e.INSPECTION_DATE < max_.INSPECTION_DATE
он возвращается очень быстро, но с ним очень медленно.
Я создал индекс для INSPECTION_DATE, а также составной индекс для ADDRESS1, POSTCODE и INSPECTION_DATE, чтобы посмотреть, будет ли какой-либо из них работать,но все равно медленноЯ уверен, что я оставил его один раз, и он возвратил «0 строк возвращено», но в sqlfiddle он, казалось, удалял дубликаты и оставлял самые последние смущенными .
Моя главная цель -удалить все дублирующиеся строки из базы данных, в которой ADDRESS1 и POSTCODE идентичны, оставив в таблице самую последнюю строку, основанную на INSPECTION_DATE.