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

Откуда: Минск
Сообщений: 247
Есть два сервера, по конфигурации можно сказать одинаковы. Один из них промышленный, 2-й резервный (через лог шипинг копируются данные и восстанавливаются.)
на обоих ms sql 2000 sp3.

Так вот, один и тот же запрос на этих серверах работает по-разному. При том, что планы выполнения идентичны и статистика тоже. На боевом выполняется медленнее - посмотрел количество лог. чтений, оно отличается от резервного (больше) в 6! раз. Дефрагментация практически одинаковая. Пробовал ещё на другом сервере (значительно слабее) количество лог. чтений такое же как на резервном.

В чем может быть дело, подскажите, оч. нужна помощь.
7 авг 09, 12:18    [7510271]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
1. а вы в боевом не выполняйте запросов никаких других. и позапускайте экспериментируемый. думаю время в итоге поправится. (кэш памяти)
2. планы все же приведите..

для спящего время бодрствования равносильно сну
7 авг 09, 12:27    [7510334]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Если на рабочий сервер запросы посылают миллионы ппользователей,
а на резервный - один, то чему удивляться?
Блокировки понаблюдайте.
Индексы пересоздавали?
7 авг 09, 12:37    [7510422]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Solo_Mes
Member

Откуда: Минск
Сообщений: 247
Данный запрос участвует в формировании отчета. Так вот формирование отчета запускали в часы наименьшей нагрузки. По словам пользователей раньше работал быстрее.
Загрузка делает своё дело, без условно. Но почему кол. лог. чтений так резко увеличилось на боевой машине.
Я могу взять кучу других запрос, и кол. лог. чтений на боевой машине и на резервной будут одного порядка.
7 авг 09, 12:59    [7510692]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
а как вы сравнивали планы?

для спящего время бодрствования равносильно сну
7 авг 09, 13:06    [7510758]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Solo_Mes
Member

Откуда: Минск
Сообщений: 247
Получил планы исполнения в профайлере для резервной и боевой машин. Забросил текст в Araxis Merge и сравнил.

вот собственно план:
Execution Tree
--------------
Sort(ORDER BY:([Table1].[RegDate] ASC))
  |--Merge Join(Inner Join, MANY-TO-MANY MERGE:([Table1].[ID])=([sh].[T3F2]), RESIDUAL:([sh].[T3F2]=[Table1].[ID]))
       |--Filter(WHERE:([DBO].[Proc1]([Table2].[T2F1], [Table1].[RegDate])>1))
       |    |--Nested Loops(Left Outer Join)
       |         |--Clustered Index Scan(OBJECT:([MYdb].[dbo].[Table1].[PK_Table1_ID]),  WHERE:([Table1].[T1F1]=348737) ORDERED FORWARD)
       |         |--Table Spool
       |              |--Compute Scalar(DEFINE:([Table2].[T2F1]=[Table2].[T2F1]))
       |                   |--Sort(TOP 1, ORDER BY:([Table2].[T2F1] DESC))
       |                        |--Filter(WHERE:([Table2].[T2F3]=340469))
       |                             |--Bookmark Lookup(BOOKMARK:([Bmk1007]), OBJECT:([MYdb].[dbo].[Table2]))
       |                                  |--Index Seek(OBJECT:([MYdb].[dbo].[Table2].[IND_Table2_T2F2]), SEEK:([Table2].[T2F2]=5621804) ORDERED FORWARD)
       |--Sort(DISTINCT ORDER BY:([sh].[T3F2] ASC))
            |--Nested Loops(Inner Join, OUTER REFERENCES:([sh].[T3F2]))
                 |--Bookmark Lookup(BOOKMARK:([Bmk1002]), OBJECT:([MYdb].[dbo].[Table3] AS [sh]))
                 |    |--Index Seek(OBJECT:([MYdb].[dbo].[Table3].[IND_Table3_T3F1] AS [sh]), SEEK:([sh].[T3F1]=5621804) ORDERED FORWARD)
                 |--Clustered Index Seek(OBJECT:([MYdb].[dbo].[Table4].[PK_Table4_ID] AS [a1]), SEEK:([a1].[ID]=[sh].[T3F2]),  WHERE:([a1].[SignerID]=342351) ORDERED FORWARD)

число лог. чтений смотрел в профайлере, и время выполнения тоже. Способы оптимизации данного запроса пока отошли на второй план. С ними буду разбираться отдельно. Основная нагрузка по чтению при сканировании [MYdb].[dbo].[Table1].[PK_Table1_ID] для данного условия относительно много данных попадает в выборку (123 тыс. всего записей в Table1 ~550 тыс.). [Table1].[T1F1] не является ПК, по нему есть индекс.
Остальные условия возвращают 20-30 записей. Вот что замечено, ~ 80% времени запроса работа процессора.
7 авг 09, 13:44    [7510985]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]

Guest
статистики обновляются?
7 авг 09, 13:52    [7511031]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
чета я вижу тут один план тока.

для спящего время бодрствования равносильно сну
7 авг 09, 13:52    [7511034]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
и покажите планы полные, через
showplan_all

для спящего время бодрствования равносильно сну
7 авг 09, 13:52    [7511037]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Solo_Mes
Member

Откуда: Минск
Сообщений: 247
Алексей2003,

второй точно такой же
7 авг 09, 13:59    [7511091]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
через showplan_all таким же быть не может. там еще куча колонок.
можете mydb переименовать в BLABLABLA.

для спящего время бодрствования равносильно сну
7 авг 09, 14:02    [7511105]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Solo_Mes

Так вот, один и тот же запрос на этих серверах работает по-разному. При том, что планы выполнения идентичны и статистика тоже. На боевом выполняется медленнее - посмотрел количество лог. чтений, оно отличается от резервного (больше) в 6! раз.

Т.е. у вас на обеих серверах содержимое таблиц совершенно одинаковое ?
7 авг 09, 14:03    [7511113]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
DBCC DBREINDEX(N'Table1')
не поможет?
7 авг 09, 14:04    [7511126]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Solo_Mes
Member

Откуда: Минск
Сообщений: 247
Glory,

да. Разница в синхронизации минут 15. Плюс ко всему данный запрос обрабатывает данные предыдущего периода (месяца) где выборка точно один к одному.
7 авг 09, 14:06    [7511136]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Solo_Mes
Member

Откуда: Минск
Сообщений: 247
iap
DBCC DBREINDEX(N'Table1')
не поможет?

может и поможет, только сейчас сделать это нет возможности.
7 авг 09, 14:07    [7511146]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2Solo_Mes
вы оба плана приводить будете с кучей колонок, или будете дальше медитировать?

для спящего время бодрствования равносильно сну
7 авг 09, 14:25    [7511260]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Solo_Mes
Member

Откуда: Минск
Сообщений: 247
Алексей2003,
сейчас будет
7 авг 09, 14:44    [7511374]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
я исходя из плана,яб еще и на запрос бы глянул..... потому как скан кластерного и спул таблицы
-------------------------------------
Jedem Das Seine
7 авг 09, 15:02    [7511483]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Solo_Mes
Member

Откуда: Минск
Сообщений: 247
резервный сервер : время выполнения 14 сек. лог. чтения 375 333

StmtText	StmtId	NodeId	Parent	PhysicalOp	LogicalOp	Argument	DefinedValues	EstimateRows	EstimateIO	EstimateCPU	AvgRowSize	TotalSubtreeCost	OutputList	Warnings	Type	Parallel	EstimateExecutions
SET STATISTICS PROFILE ON	7887	1	0			1									SETSTATON	0	

(1 row(s) affected)

StmtText	StmtId	NodeId	Parent	PhysicalOp	LogicalOp	Argument	DefinedValues	EstimateRows	EstimateIO	EstimateCPU	AvgRowSize	TotalSubtreeCost	OutputList	Warnings	Type	Parallel	EstimateExecutions
SELECT *
FROM DBO.Table1
WHERE
"T1F1"=348737 AND "ID" in (select "T3F2" from "DBO".Table3 sh join "DBO".Table4 a1 ON sh."T3F2"=a1."ID" where "T3F1"=5621804 AND a1."SignerID" in (342351) AND ((0=0 AND 0=1 AND "DBO".Proc1((sel	7888	1	0			1		1.0				26.114119			SELECT	0	
  |--Sort(ORDER BY:([Table1].[RegDate] ASC))	7888	2	1	Sort	Sort	ORDER BY:([Table1].[RegDate] ASC)		1.0	1.1261261E-2	1.03198E-4	3198	26.114119	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID		PLAN_ROW	0	1.0
       |--Merge Join(Inner Join, MANY-TO-MANY MERGE:([Table1].[ID])=([sh].[T3F2]), RESIDUAL:([sh].[T3F2]=[Table1].[ID]))	7888	5	2	Merge Join	Inner Join	MANY-TO-MANY MERGE:([Table1].[ID])=([sh].[T3F2]), RESIDUAL:([sh].[T3F2]=[Table1].[ID])		1.0	0.000313	8.9792989E-2	3227	26.102755	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID		PLAN_ROW	0	1.0
            |--Filter(WHERE:([DBO].[Proc1]([Table2].[T2F1], [Table1].[RegDate])>1))	7888	6	5	Filter	Filter	WHERE:([DBO].[Proc1]([Table2].[T2F1], [Table1].[RegDate])>1)		36906.969	0.0	8.3655789E-2	3223	25.991291	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID		PLAN_ROW	0	1.0
            |    |--Nested Loops(Left Outer Join)	7888	7	6	Nested Loops	Left Outer Join			123023.23	0.0	0.51423705	3223	25.907635	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID		PLAN_ROW	0	1.0
            |         |--Clustered Index Scan(OBJECT:([BLABLABLA].[dbo].[Table1].[PK_Table1_ID]),  WHERE:([Table1].[T1F1]=348737) ORDERED FORWARD)	7888	8	7	Clustered Index Scan	Clustered Index Scan	OBJECT:([BLABLABLA].[dbo].[Table1].[PK_Table1_ID]),  WHERE:([Table1].[T1F1]=348737) ORDERED FORWARD	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID	123023.23	12.216197	0.31533334	3215	25.063061	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID		PLAN_ROW	0	1.0
            |         |--Table Spool	7888	9	7	Table Spool	Lazy Spool			1.0	1.6756756E-2	2.7999999E-7	15	5.5172727E-2	[Table2].[T2F1]		PLAN_ROW	0	123023.23
            |              |--Compute Scalar(DEFINE:([Table2].[T2F1]=[Table2].[T2F1]))	7888	10	9	Compute Scalar	Compute Scalar	DEFINE:([Table2].[T2F1]=[Table2].[T2F1])	[Table2].[T2F1]=[Table2].[T2F1]	1.0	0.0	0.0000001	15	1.6271692E-2	[Table2].[T2F1]		PLAN_ROW	0	1.0
            |                   |--Sort(TOP 1, ORDER BY:([Table2].[T2F1] DESC))	7888	11	10	Sort	TopN Sort	TOP 1, ORDER BY:([Table2].[T2F1] DESC)		1.0	1.1261261E-2	1.3101366E-4	15	1.6271491E-2	[Table2].[T2F1]		PLAN_ROW	0	1.0
            |                        |--Filter(WHERE:([Table2].[T2F3]=340469))	7888	12	11	Filter	Filter	WHERE:([Table2].[T2F3]=340469)		7.0515699	0.0	1.4966342E-5	144	4.8792162E-3	[Table2].[T2F1]		PLAN_ROW	0	1.0
            |                             |--Bookmark Lookup(BOOKMARK:([Bmk1007]), OBJECT:([BLABLABLA].[dbo].[Table2]) WITH PREFETCH)	7888	13	12	Bookmark Lookup	Bookmark Lookup	BOOKMARK:([Bmk1007]), OBJECT:([BLABLABLA].[dbo].[Table2]) WITH PREFETCH	[Table2].[T2F3], [Table2].[T2F1]	31.179878	1.5136355E-3	3.4297867E-5	144	4.8642498E-3	[Table2].[T2F3], [Table2].[T2F1]		PLAN_ROW	0	1.0
            |                                  |--Index Seek(OBJECT:([BLABLABLA].[dbo].[Table2].[IND_Table2_T2F2]), SEEK:([Table2].[T2F2]=5621804) ORDERED FORWARD)	7888	15	13	Index Seek	Index Seek	OBJECT:([BLABLABLA].[dbo].[Table2].[IND_Table2_T2F2]), SEEK:([Table2].[T2F2]=5621804) ORDERED FORWARD	[Bmk1007]	31.179878	3.2034251E-3	1.1289141E-4	33	3.3163165E-3	[Bmk1007]		PLAN_ROW	0	1.0
            |--Sort(DISTINCT ORDER BY:([sh].[T3F2] ASC))	7888	27	5	Sort	Distinct Sort	DISTINCT ORDER BY:([sh].[T3F2] ASC)		1.0	1.1261261E-2	1.00011E-4	11	2.1353867E-2	[sh].[T3F2]		PLAN_ROW	0	1.0
                 |--Nested Loops(Inner Join, OUTER REFERENCES:([sh].[T3F2]))	7888	28	27	Nested Loops	Inner Join	OUTER REFERENCES:([sh].[T3F2])		1.0	0.0	0.00001254	191	9.9925939E-3	[sh].[T3F2]		PLAN_ROW	0	1.0
                      |--Bookmark Lookup(BOOKMARK:([Bmk1002]), OBJECT:([BLABLABLA].[dbo].[Table3] AS [sh]))	7888	29	28	Bookmark Lookup	Bookmark Lookup	BOOKMARK:([Bmk1002]), OBJECT:([BLABLABLA].[dbo].[Table3] AS [sh])	[sh].[T3F2]	1.0	4.8826954E-5	0.0000011	37	3.3329551E-3	[sh].[T3F2]		PLAN_ROW	0	1.0
                      |    |--Index Seek(OBJECT:([BLABLABLA].[dbo].[Table3].[IND_Table3_T3F1] AS [sh]), SEEK:([sh].[T3F1]=5621804) ORDERED FORWARD)	7888	30	29	Index Seek	Index Seek	OBJECT:([BLABLABLA].[dbo].[Table3].[IND_Table3_T3F1] AS [sh]), SEEK:([sh].[T3F1]=5621804) ORDERED FORWARD	[Bmk1002]	1.0	3.2034251E-3	7.9603E-5	33	3.283028E-3	[Bmk1002]		PLAN_ROW	0	1.0
                      |--Clustered Index Seek(OBJECT:([BLABLABLA].[dbo].[Table4].[PK_Table4_ID] AS [a1]), SEEK:([a1].[ID]=[sh].[T3F2]),  WHERE:([a1].[SignerID]=342351) ORDERED FORWARD)	7888	31	28	Clustered Index Seek	Clustered Index Seek	OBJECT:([BLABLABLA].[dbo].[Table4].[PK_Table4_ID] AS [a1]), SEEK:([a1].[ID]=[sh].[T3F2]),  WHERE:([a1].[SignerID]=342351) ORDERED FORWARD	[a1].[SignerID]	1.0	3.2034251E-3	7.9603E-5	163	6.645659E-3	[a1].[SignerID]		PLAN_ROW	0	3.0

(17 row(s) affected)

StmtText	StmtId	NodeId	Parent	PhysicalOp	LogicalOp	Argument	DefinedValues	EstimateRows	EstimateIO	EstimateCPU	AvgRowSize	TotalSubtreeCost	OutputList	Warnings	Type	Parallel	EstimateExecutions
SET STATISTICS PROFILE OFF	7889	1	0			1									SETSTATON	0	

(1 row(s) affected)

боевой: время выполнения 31 сек. лог. чтения 2 600 237
StmtText	StmtId	NodeId	Parent	PhysicalOp	LogicalOp	Argument	DefinedValues	EstimateRows	EstimateIO	EstimateCPU	AvgRowSize	TotalSubtreeCost	OutputList	Warnings	Type	Parallel	EstimateExecutions
SET STATISTICS PROFILE ON	15750	1	0			1									SETSTATON	0	

(1 row(s) affected)

StmtText	StmtId	NodeId	Parent	PhysicalOp	LogicalOp	Argument	DefinedValues	EstimateRows	EstimateIO	EstimateCPU	AvgRowSize	TotalSubtreeCost	OutputList	Warnings	Type	Parallel	EstimateExecutions
SELECT *
FROM DBO.Table1
WHERE
"T1F1"=348737 AND "ID" in (select "T3F2" from "DBO".Table3 sh join "DBO".Table4 a1 ON sh."T3F2"=a1."ID" where "T3F1"=5621804 AND a1."SignerID" in (342351) AND ((0=0 AND 0=1 AND "DBO".Proc1((sel	15751	1	0			1		1.0				26.213352			SELECT	0	
  |--Sort(ORDER BY:([Table1].[RegDate] ASC))	15751	2	1	Sort	Sort	ORDER BY:([Table1].[RegDate] ASC)		1.0	1.1261261E-2	1.03198E-4	3198	26.213352	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID		PLAN_ROW	0	1.0
       |--Merge Join(Inner Join, MANY-TO-MANY MERGE:([Table1].[ID])=([sh].[T3F2]), RESIDUAL:([sh].[T3F2]=[Table1].[ID]))	15751	5	2	Merge Join	Inner Join	MANY-TO-MANY MERGE:([Table1].[ID])=([sh].[T3F2]), RESIDUAL:([sh].[T3F2]=[Table1].[ID])		1.0	0.000313	8.9795887E-2	3227	26.201986	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID		PLAN_ROW	0	1.0
            |--Filter(WHERE:([DBO].[Proc1]([Table2].[T2F1], [Table1].[RegDate])>1))	15751	6	5	Filter	Filter	WHERE:([DBO].[Proc1]([Table2].[T2F1], [Table1].[RegDate])>1)		36908.238	0.0	8.3658673E-2	3223	26.087444	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID		PLAN_ROW	0	1.0
            |    |--Nested Loops(Left Outer Join)	15751	7	6	Nested Loops	Left Outer Join			123027.46	0.0	0.51425481	3223	26.003786	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID		PLAN_ROW	0	1.0
            |         |--Clustered Index Scan(OBJECT:([MyDB].[dbo].[Table1].[PK_Table1_ID]),  WHERE:([Table1].[T1F1]=348737) ORDERED FORWARD)	15751	8	7	Clustered Index Scan	Clustered Index Scan	OBJECT:([MyDB].[dbo].[Table1].[PK_Table1_ID]),  WHERE:([Table1].[T1F1]=348737) ORDERED FORWARD	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID	123027.46	12.216567	0.3153449	3215	25.063824	[Table1].[ID], [Table1].[T1F1], [Table1].[N], [Table1].[T1F3], [Table1].[RegDate], [Table1].[T1F4], [Table1].[T1F5], [Table1].[T1F6], [Table1].[T1F7], [Table1].[T1F8], [Table1].[T1F9], [Table1].[T1F2], [Table1].[StateID		PLAN_ROW	0	1.0
            |         |--Table Spool	15751	9	7	Table Spool	Lazy Spool			1.0	1.6756756E-2	2.7999999E-7	15	0.15053177	[Table2].[T2F1]		PLAN_ROW	0	123027.46
            |              |--Compute Scalar(DEFINE:([Table2].[T2F1]=[Table2].[T2F1]))	15751	10	9	Compute Scalar	Compute Scalar	DEFINE:([Table2].[T2F1]=[Table2].[T2F1])	[Table2].[T2F1]=[Table2].[T2F1]	1.0	0.0	0.0000001	15	0.11162996	[Table2].[T2F1]		PLAN_ROW	0	1.0
            |                   |--Sort(TOP 1, ORDER BY:([Table2].[T2F1] DESC))	15751	11	10	Sort	TopN Sort	TOP 1, ORDER BY:([Table2].[T2F1] DESC)		1.0	1.1261261E-2	1.3101366E-4	15	0.11162976	[Table2].[T2F1]		PLAN_ROW	0	1.0
            |                        |--Filter(WHERE:([Table2].[T2F3]=340469))	15751	12	11	Filter	Filter	WHERE:([Table2].[T2F3]=340469)		7.0515699	0.0	1.4966342E-5	144	0.10023749	[Table2].[T2F1]		PLAN_ROW	0	1.0
            |                             |--Bookmark Lookup(BOOKMARK:([Bmk1007]), OBJECT:([MyDB].[dbo].[Table2]))	15751	13	12	Bookmark Lookup	Bookmark Lookup	BOOKMARK:([Bmk1007]), OBJECT:([MyDB].[dbo].[Table2])	[Table2].[T2F3], [Table2].[T2F1]	31.179878	9.6871927E-2	3.4297867E-5	144	0.10022252	[Table2].[T2F3], [Table2].[T2F1]		PLAN_ROW	0	1.0
            |                                  |--Index Seek(OBJECT:([MyDB].[dbo].[Table2].[IND_Table2_T2F2]), SEEK:([Table2].[T2F2]=5621804) ORDERED FORWARD)	15751	15	13	Index Seek	Index Seek	OBJECT:([MyDB].[dbo].[Table2].[IND_Table2_T2F2]), SEEK:([Table2].[T2F2]=5621804) ORDERED FORWARD	[Bmk1007]	31.179878	3.2034011E-3	1.1289141E-4	33	3.3162923E-3	[Bmk1007]		PLAN_ROW	0	1.0
            |--Sort(DISTINCT ORDER BY:([sh].[T3F2] ASC))	15751	27	5	Sort	Distinct Sort	DISTINCT ORDER BY:([sh].[T3F2] ASC)		1.0	1.1261261E-2	1.00011E-4	11	2.4429869E-2	[sh].[T3F2]		PLAN_ROW	0	1.0
                 |--Nested Loops(Inner Join, OUTER REFERENCES:([sh].[T3F2]))	15751	28	27	Nested Loops	Inner Join	OUTER REFERENCES:([sh].[T3F2])		1.0	0.0	0.00001254	191	1.3068596E-2	[sh].[T3F2]		PLAN_ROW	0	1.0
                      |--Bookmark Lookup(BOOKMARK:([Bmk1002]), OBJECT:([MyDB].[dbo].[Table3] AS [sh]))	15751	29	28	Bookmark Lookup	Bookmark Lookup	BOOKMARK:([Bmk1002]), OBJECT:([MyDB].[dbo].[Table3] AS [sh])	[sh].[T3F2]	1.0	3.1249011E-3	0.0000011	37	6.4090048E-3	[sh].[T3F2]		PLAN_ROW	0	1.0
                      |    |--Index Seek(OBJECT:([MyDB].[dbo].[Table3].[IND_Table3_T3F1] AS [sh]), SEEK:([sh].[T3F1]=5621804) ORDERED FORWARD)	15751	30	29	Index Seek	Index Seek	OBJECT:([MyDB].[dbo].[Table3].[IND_Table3_T3F1] AS [sh]), SEEK:([sh].[T3F1]=5621804) ORDERED FORWARD	[Bmk1002]	1.0	3.2034011E-3	7.9603E-5	33	3.283004E-3	[Bmk1002]		PLAN_ROW	0	1.0
                      |--Clustered Index Seek(OBJECT:([MyDB].[dbo].[Table4].[PK_Table4_ID] AS [a1]), SEEK:([a1].[ID]=[sh].[T3F2]),  WHERE:([a1].[SignerID]=342351) ORDERED FORWARD)	15751	31	28	Clustered Index Seek	Clustered Index Seek	OBJECT:([MyDB].[dbo].[Table4].[PK_Table4_ID] AS [a1]), SEEK:([a1].[ID]=[sh].[T3F2]),  WHERE:([a1].[SignerID]=342351) ORDERED FORWARD	[a1].[SignerID]	1.0	3.2034011E-3	7.9603E-5	163	6.645611E-3	[a1].[SignerID]		PLAN_ROW	0	3.0

(17 row(s) affected)

StmtText	StmtId	NodeId	Parent	PhysicalOp	LogicalOp	Argument	DefinedValues	EstimateRows	EstimateIO	EstimateCPU	AvgRowSize	TotalSubtreeCost	OutputList	Warnings	Type	Parallel	EstimateExecutions
SET STATISTICS PROFILE OFF	15752	1	0			1									SETSTATON	0	

(1 row(s) affected)
7 авг 09, 15:13    [7511539]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Solo_Mes
Member

Откуда: Минск
Сообщений: 247
Запрос:
SELECT *
FROM DBO.Table1
WHERE
"T1F1"=348737 AND "ID" in (select "T3F2" from "DBO".Table3 sh join "DBO".Table4 a1 ON sh."T3F2"=a1."ID" where "T3F1"=5621804 AND a1."SignerID" in (342351) 
AND ((0=0 AND 0=1 AND "DBO".Proc1((select top 1 "T2F1" from "DBO".Table2 where "T2F2"=5621804 AND "T2F3"=340469 order by "T2F1" desc),"RegDate")>3) 
OR (0=0 AND 0=0 AND "DBO".Proc1((select top 1 "T2F1" from "DBO".Table2 where "T2F2"=5621804 AND "T2F3"=340469 order by "T2F1" desc),"RegDate")>1) 
OR (0=1 AND "DBO".Proc1("RegDate",CONVERT(DATETIME,a1."receiptdate",104))>1)))
ORDER BY
"RegDate"
7 авг 09, 15:20    [7511573]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
 "DBO".Proc1((select top 1 "T2F1" from "DBO".Table2 where "T2F2"=5621804 AND "T2F3"=340469 order by "T2F1" desc),"RegDate")

а почему нельзя это заранее вычислить? там еще пара таких же вызовов
7 авг 09, 15:24    [7511599]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Solo_Mes
Member

Откуда: Минск
Сообщений: 247
Это понятно, оптимизаций буду заниматься. Сейчас интересует другое - почему такая разница по времени выполнения и нагрузке.
7 авг 09, 15:28    [7511635]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Solo_Mes
Это понятно, оптимизаций буду заниматься. Сейчас интересует другое - почему такая разница по времени выполнения и нагрузке.

Под логическими чтениями вы подразумеваете столбец Reads из Профайлера ?
И почему вы привели предварительные планы, а не реальные ?
7 авг 09, 15:31    [7511647]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Solo_Mes
Member

Откуда: Минск
Сообщений: 247
1. да
2. Вверху приводил план из профайлера при выполнении запроса.
Подскажите как ещё можно получить реальный детализированный план, я сделаю.
7 авг 09, 15:35    [7511672]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь специалистов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Нужно скопировать запрос в студию и выполнить с настройкам SET STATISTICS IO, SET STATISTICS TIME и SET STATISTICS PROFILE
7 авг 09, 15:42    [7511709]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить