Выбор только самой последней строки из дубликатов (важна эффективность, большая таблица) - PullRequest
0 голосов
/ 19 декабря 2018
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.

...