Мне нужна ваша помощь:)
У меня есть таблица в базе данных (SQL Server 2008 R2). В настоящее время около 4 миллионов строк.
Потребительские приложения берут строки оттуда (блокируют их и обрабатывают).
Чтобы защитить строки от захвата более чем одним потребителем, я блокирую их, добавив флаг в соответствующий столбец ...
Итак, для «блокировки» записи я делаю
SELECT TOP 1 .....
и затем UPDATE
операция над записью с определенным идентификатором.
Эта операция теперь занимает до 5 секунд (я пробовал в SQL Server Management Studio):
SELECT TOP 1 *
FROM testdb.dbo.myTable
WHERE recordLockedBy is NULL;
Как я могу ускорить его?
Вот структура таблицы:
CREATE TABLE [dbo].[myTable](
[id] [int] IDENTITY(1,1) NOT NULL,
[num] [varchar](15) NOT NULL,
[date] [datetime] NULL,
[field1] [varchar](150) NULL,
[field2] [varchar](150) NULL,
[field3] [varchar](150) NULL,
[field4] [varchar](150) NULL,
[date2] [datetime] NULL,
[recordLockedBy] [varchar](100) NULL,
[timeLocked] [datetime] NULL,
[field5] [varchar](100) NULL);