Операция ОБНОВЛЕНИЕ занимает 6 секунд - PullRequest
1 голос
/ 27 февраля 2012

Я делаю запрос UPDATE из моего клиентского приложения в базу данных (SQL Server 2008 R2), и для его завершения требуется 6 секунд.

В настоящее время у меня около 5 миллионов строк в этой таблице.

Вот запрос:

UPDATE MyTable 
SET subject2 = 'information abx', dateProcessed = '2012-02-27 23:02:44' 
WHERE id = 3712028;

Где столбцы:

[id] [int] IDENTITY(1,1) NOT NULL,
[dateProcessed] [datetime] NULL,
[subject2] [nvarchar](150) NULL,

Есть ли способы дефрагментировать базу данных чего-то подобного ??:)

Не думаю, что 6 секунд - это нормальное время для обновления поиска в 1 строке по индексируемому полю ...

Любая помощь очень важна!Спасибо,

ОБНОВЛЕНИЕ 1: Простите, ребята!У меня нет индексов в таблице.Я думал, что IDENTITY - это что-то вроде INDEX.Так что, вероятно, я должен добавить INDEX в поле id или сделать его PRIMARY KEY

Ответы [ 2 ]

3 голосов
/ 27 февраля 2012

Объявление столбца identity не делает его автоматически проиндексированным; объявление первичного ключа делает:

[id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY

Вы можете добавить ограничение к существующей базе данных следующим образом:

ALTER TABLE MyTable ADD PRIMARY KEY (id)
1 голос
/ 27 февраля 2012

Если у вас есть индекс, определенный для столбцов subject2 или dateProcessed, обновление может быть медленным из-за обновления индексов.

Если вы это сделаете, может быть, стоит отбросить их, если вы не будете часто запрашивать эти поля.

Также стоит сделать поле идентификатора первичным ключом, если это возможно, что даст ему индекс и ускорит поиск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...