Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Перестроение индекса после апдейта  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Есть таблицы: продаж(временная) и продукции.

Есть кластерный индекс на продажах по ид единицы продукции
CREATE CLUSTERED INDEX CL_IX_ItemId ON #Sales (ItemId)



Есть простой апдейт
 
UPDATE S SET 
  S.[TotalSum] = S.[Qty]*I.[Price]
FROM #Sales S INNER JOIN Items I ON S.ItemId = S.ItemId
Есть простой апдейт 


Почему 56 процентов этого апдейта занимает обновление кластерного индекса?

Clustered Index Update(OBJECT:([tempdb].[dbo].[#Sales]), SET:([tempdb].[dbo].[#Sales_raw].[Sum] = [Expr1067]))
18 апр 13, 17:19    [14199883]     Ответить | Цитировать Сообщить модератору
 Re: Перестроение индекса после апдейта  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
#Sales -> #Sales_raw , небольшая несущественная опечатка
18 апр 13, 17:20    [14199896]     Ответить | Цитировать Сообщить модератору
 Re: Перестроение индекса после апдейта  [new]
Glory
Member

Откуда:
Сообщений: 104751
Потому что кластерный индекс и есть таблица ?

The Clustered Index Update operator updates input rows in the clustered index specified in the Argument column.
18 апр 13, 17:34    [14199982]     Ответить | Цитировать Сообщить модератору
 Re: Перестроение индекса после апдейта  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Гм, мне почему-то всегда казалось, что кластерный индекс это копия указанных полей, а не ВСЕЙ таблицы =\

Какой прокол в теории...
18 апр 13, 17:37    [14199995]     Ответить | Цитировать Сообщить модератору
 Re: Перестроение индекса после апдейта  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3754
Cammomile
Есть простой апдейт
 UPDATE S SET 
  S.[TotalSum] = S.[Qty]*I.[Price]
FROM #Sales S INNER JOIN Items I ON S.ItemId = S.ItemId



Ошибка в апдейте. S.ItemId = S.ItemId. Поправь, запрос залетает )))))))))))))
18 апр 13, 18:27    [14200188]     Ответить | Цитировать Сообщить модератору
 Re: Перестроение индекса после апдейта  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31965
Cammomile
Гм, мне почему-то всегда казалось, что кластерный индекс это копия указанных полей, а не ВСЕЙ таблицы =\
Указанные поля в б-дереве, но на нижнем уровне - страницы данных таблицы (то есть не копия таблицы, а сама таблица).
Ivan Durak
Cammomile
Есть простой апдейт
 UPDATE S SET 
  S.[TotalSum] = S.[Qty]*I.[Price]
FROM #Sales S INNER JOIN Items I ON S.ItemId = S.ItemId

Ошибка в апдейте. S.ItemId = S.ItemId. Поправь, запрос залетает )))))))))))))
Ага, и результат вычислений TotalSum будет поточнее :-)
Интересно, это реально работающая система с реальным расчётом денег???
18 апр 13, 22:28    [14200792]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить