Лет 10 назад у меня в БД Oracle была такая проблема. Медленно чистились исторические partitions.
Ничего нельзя было придумать. Потом мы заметили что удаляется 99% datarows. После этого пришла
идея - вообще ничего не удалять а просто пересоздавать историчесекий parition с теми datarows
которые НАДО ОСТАВИТЬ. И грохать оригинальный. После такой оптимизации мы ускорились в 1000 раз. Надо было только сделать exchange partitions (ораклоиды поймут).
Вот так вот.
var token = jsMain["data"][i];
if (!unique.Contains(token))
{
token.Remove();
}
Попробуй другую стратегию. Пересоздай новый JSON. С учетом удаленных токенов.