Delete duplicate entries with lower IDs
This would probably be better on DBA
You can use a CTE
An index on fork_id should help  

with cte as 
( SELECT ROW_NUMBER() OVER (PARTITION BY [fork_id] ORDER BY ID DESC) AS RowNumber 
  FROM [tableName]
)
delete from cte 
WHERE RowNumber &gt; 1  


Optimize 

select * from cte 
WHERE RowNumber &gt; 1


If that is fast it is volume thing and you could delete in batches