Мне нужно добавить первичный ключ в существующую таблицу, которая содержит почти 1,7 миллиона записей. Когда я сделал это просто с помощью приведенной ниже команды через flyway, весь процесс занял около 2 часов. Если я запускаю запрос непосредственно на БД, это занимает от 30 до 40 минут.
ALTER TABLE [dbo].[presession_areas_of_consent]
ADD [presession_areas_of_consent_id] [UNIQUEIDENTIFIER] DEFAULT newid() NOT null
GO
Я читаю различные статьи, в которых спор идет о guid и идентификаторе, и я предпочитаю идентификацию, а не guid, если индексация не требуется и записи таблицы будут экспоненциально увеличиваться.
Но остается вопрос, почему серверу требуется 2 часа для создания записей.
Сервер sql и код находятся на одном узле. Добавлено изображение для справки
Любые идеи будут полезны.
![enter image description here](https://i.stack.imgur.com/Og4BJ.png)
Схема таблицы:
CREATE TABLE [dbo].[presession_areas_of_consent](
[pre_session_id] [varchar](255) NOT NULL,
[customer_notes] [varchar](5000) NULL,
[customer_options] [varchar](255) NULL,
[area_of_consent] [varchar](255) NOT NULL,
[last_modified_date] [datetime] NOT NULL,
[created_date] [datetime] NOT NULL,
[presession_areas_of_consent_id] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_presession_areas_of_consent_id] PRIMARY KEY CLUSTERED
(
[presession_areas_of_consent_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[presession_areas_of_consent] ADD CONSTRAINT [PRAC_DF_MODIFIED_AT] DEFAULT (getutcdate()) FOR [last_modified_date]
GO
ALTER TABLE [dbo].[presession_areas_of_consent] ADD CONSTRAINT [PSC_DF_CREATED_AT] DEFAULT (getutcdate()) FOR [created_date]
GO
ALTER TABLE [dbo].[presession_areas_of_consent] ADD DEFAULT (newid()) FOR [presession_areas_of_consent_id]
GO
ALTER TABLE [dbo].[presession_areas_of_consent] WITH CHECK ADD CONSTRAINT [FK_j58lc9x3x6di8f6tcwrib44bj] FOREIGN KEY([pre_session_id])
REFERENCES [dbo].[presession] ([pre_session_id])
GO
ALTER TABLE [dbo].[presession_areas_of_consent] CHECK CONSTRAINT [FK_j58lc9x3x6di8f6tcwrib44bj]
GO