Изменяя и находя вещи в базе данных, содержащей несколько десятков таблиц с полмиллионом строк в больших, я часто сталкиваюсь с таймаутами.
Некоторые из этих таймаутов я не понимаю.Например, я получил эту таблицу:
CREATE TABLE dbo.[VPI_APO]
(
[Key] bigint IDENTITY(1,1) NOT NULL CONSTRAINT [PK_VPI_APO] PRIMARY KEY,
[PZN] nvarchar(7) NOT NULL,
[Key_INB] nvarchar(5) NOT NULL,
) ON [PRIMARY]
GO
ALTER TABLE dbo.[VPI_APO] ADD CONSTRAINT [IX_VPI_APOKey_INB] UNIQUE NONCLUSTERED
(
[PZN],
[Key_INB]
) ON [PRIMARY]
GO
Я часто получаю тайм-ауты при поиске элемента в этой таблице следующим образом (при вставке большого количества элементов):
SELECT [Key] FROM dbo.[VPI_APO] WHERE ([PZN] = @Search1) AND ([Key_INB] = @Search2)
Эти таймаутыпри поиске на уникальных ограничениях встречаются довольно часто.Я ожидал, что уникальные ограничения будут иметь те же преимущества, что и индексы, я ошибся?Нужен ли также индекс для этих полей?
Или мне придется искать по-другому, чтобы воспользоваться ограничением?
Я использую SQL Server 2008 R2.