У меня есть две таблицы с 10-20 миллионами строк, которые имеют первичные ключи GUID и не менее 12 таблиц, связанных через внешний ключ. Базовые таблицы имеют по 10-20 индексов каждая.
Мы переходим от GUID к первичным ключам BigInt. Мне интересно, есть ли у кого-нибудь предложения по подходу. Прямо сейчас это подход, который я обдумываю:
- Отбросьте все индексы и fkeys для всех задействованных таблиц.
- Добавьте столбец NewPrimaryKey в каждую таблицу.
- Сделайте идентификатор ключа на двух базовых таблицах
- Скрипт изменения данных "обновить таблицу x, установить NewPrimaryKey = y, где OldPrimaryKey = z
- Переименуйте исходный первичный ключ в «oldprimarykey».
- Переименуйте столбец «NewPrimaryKey» в «PrimaryKey».
- Скрипт назад все индексы и fkeys
Это кажется хорошим подходом? Кто-нибудь знает инструмент или скрипт, который поможет с этим?
TD: Отредактировано в соответствии с дополнительной информацией. См. эту запись в блоге, в которой рассматривается подход, когда GUID является основным: http://www.sqlmag.com/blogs/sql-server-questions-answered/sql-server-questions-answered/tabid/1977/entryid/12749/Default.aspx