Identifiquei milhões de linhas duplicadas em uma tabela que herdei usando esta consulta:
SELECT COUNT(*) AS NumRecords, AccessID, LEFT(SQLTEXT, 5000)
FROM Table
WHERE AccessID=5012
GROUP BY AccessID, LEFT(SQLTEXT, 5000)
HAVING COUNT(*)>1;
O único índice que posso usar na tabela é o campo AccessRequestID - o campo SQLText é VARCHAR(MAX) e existem mais de 100 milhões de registros aqui e como existe uma coluna varchar(MAX) a tabela é ENORME e leva FOREVER para fazer qualquer coisa com. Como posso transformar essa instrução Select em uma exclusão para remover os registros duplicados? Eu estava tentando descobrir como escrever um CTE usando Partition Rownum, mas não estou confiante nisso. Minha idéia seria tê-lo em um loop que começa com AccessID 1 e depois incrementa em um até o final da tabela (Existem apenas 5012 accessIDs exclusivos) Já que eu estaria filtrando o where pelo NC Index, espero que seja mais rápido .
talvez você possa tentar inserir as linhas válidas em uma nova tabela e substituir a tabela antiga pela nova.