Я сталкиваюсь с подобной проблемой, я думаю, что было бы возможно обновить существующие данные, написав приложение для обновления существующих ключей с использованием алгоритма NHibernate guid.comb. Чтобы распространить новые ключи на связанные таблицы внешних ключей, возможно, можно было бы временно каскадно обновлять? Выполнение этого с помощью кода .NET будет медленнее, чем сценария SQL, другой вариант может заключаться в дублировании логики guid.comb в SQL, но не уверен, возможно ли это.
Если вы решите сохранить существующие данные, использование алгоритма guid.comb должно привести к некоторому улучшению производительности, при вставках будет происходить разбиение страницы, но поскольку новые направляющие являются последовательными, а не полностью случайными, это будет по меньшей мере несколько уменьшено. , Другой вариант, который следует рассмотреть, - это удалить кластеризованный индекс в первичном ключе GUID, хотя я не уверен, насколько это повлияет на производительность существующих запросов.