Запрос на удаление дубликатов SQL с миллионами строк для повышения производительности - PullRequest
2 голосов
/ 02 октября 2008

Это было приключение. Я начал с зацикливания повторяющегося запроса, расположенного в моем предыдущем вопросе , но каждый цикл проходил бы по всем 17 миллионам записей , , означая, что это займет недели (просто выполнение *select count * from MyTable* занимает у моего сервера 4:30 минуты с использованием MSSQL 2005). Я пролил информацию с этого сайта и на эту запись .

И пришли к запросу ниже. Вопрос в том, является ли этот тип запроса для 17 миллионов записей для любого типа производительности? Если нет, то что?

SQL-запрос:

DELETE tl_acxiomimport.dbo.tblacxiomlistings
WHERE RecordID in 
(SELECT RecordID
    FROM tl_acxiomimport.dbo.tblacxiomlistings
    EXCEPT
    SELECT RecordID
    FROM (
        SELECT RecordID, Rank() over (Partition BY BusinessName, latitude, longitude,           Phone ORDER BY webaddress DESC, caption1 DESC, caption2 DESC ) AS Rank
    FROM tl_acxiomimport.dbo.tblacxiomlistings
    ) al WHERE Rank = 1)

Ответы [ 11 ]

0 голосов
/ 02 октября 2008

Это выглядит хорошо, но вы можете рассмотреть возможность выбора ваших данных во временную таблицу и использовать их в своем выражении удаления. Я заметил огромный прирост производительности при выполнении этого вместо выполнения всего этого в одном запросе.

...