2015-03-02 9 views
0

SQL Server 2008 R2.Простой SQL-обновление выполняется очень медленно

Выполнение простой команды обновления, которая выглядит, как этот

UPDATE [group_mtm] SET group = foobar where user in (u1,u2,u3,...u19) 

запрос только обновление 1 строка, но занимает свыше 2-х секунды. Это таблица атрибутов 2, используемая как соединение много-ко-многим. В настоящее время в таблице представлено около 300 записей. Основной ключ = составной ключ для атрибутов группы и пользователя.

Я набор статистики по изучить его и выполнение запроса включает в себя кучу других таблиц, которые не имеют никакого бизнеса быть вовлеченным:

Table 'foobar'. Scan count 1, logical reads 21214, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 
Table 'Worktable'. Scan count 1664, logical reads 42674, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 
Table 'mail_mtm'. Scan count 1, logical reads 428, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 
Table 'event'. Scan count 1, logical reads 893, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 
Table 'user'. Scan count 0, logical reads 91, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 
Table 'addresses'. Scan count 1, logical reads 12, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 
Table 'mail'. Scan count 1, logical reads 79, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 
Table 'links'. Scan count 1, logical reads 18, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 
Table 'group_mtm'. Scan count 20, logical reads 120, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 

(20 row(s) affected) 

(1 row(s) affected) 

Единственное, что я могу вспомнить, что Foobar является и индексируются просмотра, и, возможно, затраты тратятся на его поддержание, поэтому я проверил план выполнения; он действительно вступает в игру (но только 11% стоимости).

Почему это занимает 2+ секунд?

Что я пересматриваю здесь?

В плане выполнения указано, что я добавляю индекс на событие, но событие не должно даже участвовать здесь, и его стоимость составляет всего 13%.

Я чувствую, что это должно быть молниеносно, если бы не посторонние столы в этом случае.

Кто-то, вероятно, собирается дать мне совет мудреца об индексированных представлениях, увеличивая общую накладную БД; но все другие операции, идущие в туалет, кажутся довольно крутой ценой для более быстрого поиска запросов на некоторые запросы, предоставляемые индексированными представлениями.

Учите меня; пожалуйста и спасибо!

план выполнения XML является слишком большим, чтобы получить возможность отправлять как текст, и я не вижу для вкладывания, так Pastebin на помощь: http://pastebin.com/BgjBxLfc

+1

Есть ли триггеры на столе? sp_HelpTrigger 'group_mtm' –

+0

Можете ли вы опубликовать фактический план выполнения (Ctrl + M и Execute/F5) в формате XML? Есть ли какие-либо операторы * Scan, * Lookup, Sort? –

+0

отрицательный. Только 2 триггера во всей базе данных, и оба они находятся в таблице, не включенной в x-план. Мы старались держать спаньца довольно спартанцем. Но хорошая мысль. В соответствии с публикацией x-плана, его рода трудно счистить ... – zentechinc

ответ

0

Это может быть не весь ответ, но расширить запрос SQL для дальнейшего укажите имена полей: [таблица]. [поле]. Я предполагаю, что «группа» - это поле в group_mtm, но похоже, что вы пытаетесь присвоить ему таблицу «foobar»?

+0

UPDATE [group_mtm] SET [group_mtm]. [Group] = 'foobar', где пользователь в (u1, u2, u3, ... u19) – zentechinc

+0

Выполнял ли он что-то подобное, получая разные результаты? Я заметил, что в вашем исходном фрагменте foobar не был заключен в кавычки. –

Смежные вопросы