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

Откуда: Саратов
Сообщений: 487
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) 
	Jun 28 2012 08:36:30 
	Copyright (c) Microsoft Corporation
	Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


Доброго времени суток.
Имеется запрос
select res.ID
from dbo.Local_Res_tbl as res
join slices.LResources as sRes
	on sRes.OriginalID64 = res.ID
join slices.Positions as sPos
	on sRes.LBudgetID = sPos.LBudgetID
where sPos.SliceID = 562

Таблица "Local_Res_tbl". Число просмотров 1, логических чтений 39094, физических чтений 186, упреждающих чтений 39090, 
lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Время выполнения: 4726 мс

Добавляем в результирующий набор столбец размером 16 байт
select res.ID, res.IdLoc_res
...

Таблица "Local_Res_tbl". Число просмотров 1, логических чтений 58501, физических чтений 661, упреждающих чтений 58497, 
lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Время выполнения: 7207 мс


Добавляем в результирующий набор еще один столбец размером 16 байт
select res.ID, res.IdLocal_Res, res.IdResource 
...

Таблица "Local_Res_tbl". Число просмотров 1, логических чтений 1704971, физических чтений 6481, упреждающих чтений 1704966, 
lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.
Время выполнения: 255797 мс

Скорость выполнения запроса и число логических чтений увеличились примерно в 30 раз. С чем это может быть связано, если все 3 запроса выполнялись по одному и тому же плану
  |--Hash Match(Inner Join, HASH:([sRes].[OriginalID64])=([res].[ID]), RESIDUAL:([Access_BD].[dbo].[Local_Res_tbl].[ID] 
	as [res].[ID]=[Access_BD].[slices].[LResources].[OriginalID64] as [sRes].[OriginalID64]))
       |--Nested Loops(Inner Join, OUTER REFERENCES:([sPos].[LBudgetID], [Expr1007]) OPTIMIZED WITH UNORDERED PREFETCH)
       |    |--Index Seek(OBJECT:([Access_BD].[slices].[Positions].[IX_Positions_SliceID] AS [sPos]), SEEK:
	([sPos].[SliceID]=(562)) ORDERED FORWARD)
       |    |--Index Seek(OBJECT:([Access_BD].[slices].[LResources].[IX_LResources_LBudgetID_Ext] AS [sRes]), SEEK:
	([sRes].[LBudgetID]=[Access_BD].[slices].[Positions].[LBudgetID] as [sPos].[LBudgetID]) ORDERED FORWARD)
       |--Index Scan(OBJECT:([Access_BD].[dbo].[Local_Res_tbl].[IX_Local_Res_tbl_IdResource32] AS [res])) 
19 ноя 12, 14:58    [13495038]     Ответить | Цитировать Сообщить модератору
 Re: Резкое увеличение числа чтений  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Шамиль Фаридович
Скорость выполнения запроса и число логических чтений увеличились примерно в 30 раз


может все же не "скорость выполнения", а "время выполнения"? что, вроде бы, вполне логично
19 ноя 12, 15:05    [13495112]     Ответить | Цитировать Сообщить модератору
 Re: Резкое увеличение числа чтений  [new]
ROLpogo
Member

Откуда: Реутов
Сообщений: 219
Шамиль Фаридович,

Какие индексы созданы на таблице dbo.Local_Res_tbl?
19 ноя 12, 16:31    [13495705]     Ответить | Цитировать Сообщить модератору
 Re: Резкое увеличение числа чтений  [new]
Шамиль Фаридович
Member

Откуда: Саратов
Сообщений: 487
ROLpogo,
спасибо за подсказку. Действительно, хотя план визуально одинаковый, скан Local_res_tbl идет в 3 запросах по 3 разным индексам - 1 раз по самому маленькому индексу, второй - по индексу покрупнее, а третий скан по самому большому индексу - кластеризованному первичному ключу.
19 ноя 12, 17:54    [13496246]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить