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

Откуда: Kovrov
Сообщений: 173
MSSQL Server 2000 SP4
Совсем случайно встретился с тем, что наличие опреатора CASE в запросе сильно увеличивает время его выполнения. Как с этим можно побороться?
17 апр 12, 07:36    [12425129]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

https://www.sql.ru/faq/faq_topic.aspx?fid=393

Posted via ActualForum NNTP Server 1.5

17 апр 12, 08:13    [12425184]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
dubok
Member

Откуда: Kovrov
Сообщений: 173
daw
https://www.sql.ru/faq/faq_topic.aspx?fid=393

Спасибо конечно, земляк, но что мне это дает? Я уже изсмотреля на планы выполнения или ты предлагаешь сюда его выложить?
17 апр 12, 08:25    [12425212]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
dubok
daw
https://www.sql.ru/faq/faq_topic.aspx?fid=393

Спасибо конечно, земляк, но что мне это дает? Я уже изсмотреля на планы выполнения или ты предлагаешь сюда его выложить?
Если вы задаёте вопрос, то конечно нужно выложить оба плана, вместе с текстами запросов. Как иначе можно понять, что происходит?

От CASE никакого замедления быть не должно, если это просто вычисление.

Значит, либо ломается план, либо в CASE есть вызов UDF или обращение к таблицам.
17 апр 12, 08:30    [12425227]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Я уже изсмотреля на планы выполнения или ты предлагаешь сюда его выложить?

например, да - сюда выложить. может, и подскажут чего.


Posted via ActualForum NNTP Server 1.5

17 апр 12, 08:33    [12425237]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
dubok
Я уже изсмотреля на планы выполнения

И что вам тогда непонятно ?
Или вы тоже думаете, что все запросы должны выполняться за одинаковое время ?
17 апр 12, 08:34    [12425244]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
dubok
Member

Откуда: Kovrov
Сообщений: 173
alexeyvg
От CASE никакого замедления быть не должно, если это просто вычисление.
Значит, либо ломается план, либо в CASE есть вызов UDF или обращение к таблицам.

Что значит обращение к таблицам? Если написано:
SELECT mode = case when T1.id IS NULL THEN 1 ELSE 0 END
FROM T
  LEFT JOIN T1 ON T.idc = T1.idc

Это есть обращение к таблицам или имелось ввиду что-то другое?
Спасибо
17 апр 12, 09:51    [12425517]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
dubok
alexeyvg
От CASE никакого замедления быть не должно, если это просто вычисление.
Значит, либо ломается план, либо в CASE есть вызов UDF или обращение к таблицам.

Что значит обращение к таблицам? Если написано:
SELECT mode = case when T1.id IS NULL THEN 1 ELSE 0 END
FROM T
  LEFT JOIN T1 ON T.idc = T1.idc

Это есть обращение к таблицам или имелось ввиду что-то другое?
Спасибо
Вот именно этот CASE тормозит весь запрос?
17 апр 12, 09:53    [12425527]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
dubok
Member

Откуда: Kovrov
Сообщений: 173
планы выполнения прикрепить как csv файл или прям текстом сюда выкладывать?
17 апр 12, 09:54    [12425528]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
dubok
планы выполнения прикрепить как csv файл или прям текстом сюда выкладывать?
https://www.sql.ru/faq/faq_topic.aspx?fid=393
17 апр 12, 09:56    [12425544]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
dubok
Member

Откуда: Kovrov
Сообщений: 173
iap
dubok
планы выполнения прикрепить как csv файл или прям текстом сюда выкладывать?
https://www.sql.ru/faq/faq_topic.aspx?fid=393

не понял?
17 апр 12, 09:59    [12425556]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
dubok
Member

Откуда: Kovrov
Сообщений: 173
запрос
DECLARE @DB datetime, @DE datetime SELECT @DB = '20120401', @DE = '20120430'
SELECT 
		[id]	= F.id,
		[Text]	= CAST(F.NumberDoc AS char(20)) COLLATE Cyrillic_General_CI_AS
			+';BOLD='+CASE WHEN NA2Inf.idNaklAssort IS NOT NULL THEN '1' ELSE '0' END
	FROM 	dbo.f_skNaklAssortList (1010,@DB,@DE,124,-1,-1,-1) AS F
		LEFT JOIN dbo.f_skNaklAssort2Infer(@DB,@DE) NA2Inf ON NA2Inf.idNaklAssort = F.id

вермя выполнения 9сек
если закоментировать строку "+';BOLD='+CASE WHEN NA2Inf.idNaklAssort IS NOT NULL THEN '1' ELSE '0' END" то время выпонения 1 сек.

предварительный план выполнения
+

StmtText
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  |--Compute Scalar(DEFINE:([Expr1022]=Convert([F].[NumberDoc])+';BOLD='+Convert(If ([Union1021]<>NULL) then '1' else '0')))
       |--Stream Aggregate(GROUP BY:([Rank1029]) DEFINE:([F].[id]=ANY([F].[id]), [F].[NumberDoc]=ANY([F].[NumberDoc]), [Union1021]=ANY([Union1021])))
            |--Nested Loops(Left Outer Join, OUTER REFERENCES:([F].[id]))
                 |--Rank
                 |    |--Table Scan(OBJECT:(dbo.f_skNaklAssortList AS [F]))
                 |--Table Spool
                      |--Concatenation
                           |--Nested Loops(Inner Join)
                           |    |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortG].[IX_skNaklAssortG_idUDidUKidAgDidAgK]), SEEK:([skNaklAssortG].[id]=[F].[id]),  WHERE:([skNaklAssortG].[DateDoc]>=[@DB] AND [skNaklAssortG].[DateDoc]<=[@DE]) ORDER
                           |    |--Hash Match(Inner Join, HASH:([skNaklAssortSG].[id])=([otkInferBVKS].[idNaklAssortS]))
                           |         |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortSG].[IX_skNaklAssortSG_001]), SEEK:([skNaklAssortSG].[idNaklAssort]=[F].[id]) ORDERED FORWARD)
                           |         |--Nested Loops(Inner Join, OUTER REFERENCES:([otkInferBVKS].[idInferBVK]) WITH PREFETCH)
                           |              |--Hash Match(Inner Join, HASH:([otkInferBrakKind].[idInfer])=([otkInferBVKS].[id]))
                           |              |    |--Index Scan(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBrakKind].[IX_otkInferBrakKind_002]))
                           |              |    |--Index Scan(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVKS].[IX_otkInferBVKS_005]))
                           |              |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVK].[IX_otkInferBVK_006]), SEEK:([otkInferBVK].[FlagDel]=0 AND [otkInferBVK].[id]=[otkInferBVKS].[idInferBVK]) ORDERED FORWARD)
                           |--Nested Loops(Inner Join)
                                |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortArhG].[IX_skNaklAssortArhG_idUDidUKidAgDidAgK]), SEEK:([skNaklAssortArhG].[id]=[F].[id]),  WHERE:([skNaklAssortArhG].[DateDoc]>=[@DB] AND [skNaklAssortArhG].[DateDoc
                                |--Hash Match(Inner Join, HASH:([skNaklAssortArhSG].[id])=([otkInferBVKS].[idNaklAssortS]))
                                     |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortArhSG].[IX_skNaklAssortArhSG_idNA_A_I_Q]), SEEK:([skNaklAssortArhSG].[idNaklAssort]=[F].[id]) ORDERED FORWARD)
                                     |--Nested Loops(Inner Join, OUTER REFERENCES:([otkInferBVKS].[idInferBVK]) WITH PREFETCH)
                                          |--Hash Match(Inner Join, HASH:([otkInferBrakKind].[idInfer])=([otkInferBVKS].[id]))
                                          |    |--Index Scan(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBrakKind].[IX_otkInferBrakKind_002]))
                                          |    |--Index Scan(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVKS].[IX_otkInferBVKS_005]))
                                          |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVK].[IX_otkInferBVK_006]), SEEK:([otkInferBVK].[FlagDel]=0 AND [otkInferBVK].[id]=[otkInferBVKS].[idInferBVK]) ORDERED FORWARD)

действительный план выпонения
+

Rows        Executes    StmtText                                                                                                                                                                                                                                                         StmtId      NodeId      Parent      PhysicalOp                     LogicalOp                      Argument                                                                                                                                                                                                                                     DefinedValues                                                                                   EstimateRows  EstimateIO    EstimateCPU   AvgRowSize  TotalSubtreeCost OutputList                                                                        Warnings Type                           Parallel EstimateExecutions
----------- ----------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- ------------- ------------- ------------- ----------- ---------------- --------------------------------------------------------------------------------- -------- ------------------------------ -------- ------------------
317         1           SELECT 
		[id]	= F.id,
		[Text]	= CAST(F.NumberDoc AS char(20)) COLLATE Cyrillic_General_CI_AS
			+';BOLD='+CASE WHEN NA2Inf.idNaklAssort IS NOT NULL THEN '1' ELSE '0' END
	FROM 	dbo.f_skNaklAssortList (1010,@DB,@DE,124,-1,-1,-1) AS F
		LEFT JOIN dbo. 77          1           0           NULL                           NULL                           NULL                                                                                                                                                                                                                                         NULL                                                                                            1             NULL          NULL          NULL        1,494827         NULL                                                                              NULL     SELECT                         0        NULL
317         1             |--Compute Scalar(DEFINE:([Expr1022]=Convert([F].[NumberDoc])+';BOLD='+Convert(If ([Union1021]<>NULL) then '1' else '0')))                                                                                                                                     77          2           1           Compute Scalar                 Compute Scalar                 DEFINE:([Expr1022]=Convert([F].[NumberDoc])+';BOLD='+Convert(If ([Union1021]<>NULL) then '1' else '0'))                                                                                                                                      [Expr1022]=Convert([F].[NumberDoc])+';BOLD='+Convert(If ([Union1021]<>NULL) then '1' else '0')  1             0             1E-07         28          1,494827         [F].[id], [Expr1022]                                                              NULL     PLAN_ROW                       0        1
317         1                  |--Stream Aggregate(GROUP BY:([Rank1029]) DEFINE:([F].[id]=ANY([F].[id]), [F].[NumberDoc]=ANY([F].[NumberDoc]), [Union1021]=ANY([Union1021])))                                                                                                            77          3           2           Stream Aggregate               Aggregate                      GROUP BY:([Rank1029])                                                                                                                                                                                                                        [F].[id]=ANY([F].[id]), [F].[NumberDoc]=ANY([F].[NumberDoc]), [Union1021]=ANY([Union1021])      1             0             1,008394E-05  35          1,494827         [F].[id], [F].[NumberDoc], [Union1021]                                            NULL     PLAN_ROW                       0        1
317         1                       |--Nested Loops(Left Outer Join, OUTER REFERENCES:([F].[id]))                                                                                                                                                                                        77          4           3           Nested Loops                   Left Outer Join                OUTER REFERENCES:([F].[id])                                                                                                                                                                                                                  NULL                                                                                            1,940694      0             3,46275E-05   37          1,494817         [F].[id], [F].[NumberDoc], [Union1021], [Rank1029]                                NULL     PLAN_ROW                       0        1
317         1                            |--Rank                                                                                                                                                                                                                                         77          5           4           Rank                           Rank                           NULL                                                                                                                                                                                                                                         NULL                                                                                            1             0             1E-06         33          0,0376591        [F].[id], [F].[NumberDoc], [Rank1029]                                             NULL     PLAN_ROW                       0        1
317         1                            |    |--Table Scan(OBJECT:(dbo.f_skNaklAssortList AS [F]))                                                                                                                                                                                      77          6           5           Table Scan                     Table Scan                     OBJECT:(dbo.f_skNaklAssortList AS [F])                                                                                                                                                                                                       [F].[id], [F].[NumberDoc]                                                                       1             0,0375785     7,96E-05      31          0,0376581        [F].[id], [F].[NumberDoc]                                                         NULL     PLAN_ROW                       0        1
1           317                          |--Table Spool                                                                                                                                                                                                                                  77          7           4           Table Spool                    Lazy Spool                     NULL                                                                                                                                                                                                                                         NULL                                                                                            2,761364      0,01675676    5,970455E-07  11          1,457124         [Union1021]                                                                       NULL     PLAN_ROW                       0        3
1           317                               |--Concatenation                                                                                                                                                                                                                           77          8           7           Concatenation                  Concatenation                  NULL                                                                                                                                                                                                                                         [Union1021] = ([skNaklAssortSG].[idNaklAssort], [skNaklAssortArhSG].[idNaklAssort])             2,761364      0             2,761364E-07  11          1,440365         [Union1021]                                                                       NULL     PLAN_ROW                       0        1
1           317                                    |--Nested Loops(Inner Join)                                                                                                                                                                                                           77          9           8           Nested Loops                   Inner Join                     NULL                                                                                                                                                                                                                                         NULL                                                                                            1,380682      0             5,77125E-06   80          0,7201773        [skNaklAssortSG].[idNaklAssort]                                                   NULL     PLAN_ROW                       0        1
317         317                                    |    |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortG].[IX_skNaklAssortG_idUDidUKidAgDidAgK]), SEEK:([skNaklAssortG].[id]=[F].[id]),  WHERE:([skNaklAssortG].[DateDoc]>=[@DB] AND [skNaklAssortG].[DateDoc]<=[@DE]) ORDER 77          10          9           Index Seek                     Index Seek                     OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortG].[IX_skNaklAssortG_idUDidUKidAgDidAgK]), SEEK:([skNaklAssortG].[id]=[F].[id]),  WHERE:([skNaklAssortG].[DateDoc]>=[@DB] AND [skNaklAssortG].[DateDoc]<=[@DE]) ORDERED FORWARD                 [skNaklAssortG].[DateDoc]                                                                       1             0,003203475   7,9603E-05    68          0,003283078      [skNaklAssortG].[DateDoc]                                                         NULL     PLAN_ROW                       0        1
1           317                                    |    |--Hash Match(Inner Join, HASH:([skNaklAssortSG].[id])=([otkInferBVKS].[idNaklAssortS]))                                                                                                                                         77          11          9           Hash Match                     Inner Join                     HASH:([skNaklAssortSG].[id])=([otkInferBVKS].[idNaklAssortS])                                                                                                                                                                                NULL                                                                                            1,380682      0             0,02780526    19          0,7168876        [skNaklAssortSG].[idNaklAssort]                                                   NULL     PLAN_ROW                       0        1
907         317                                    |         |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortSG].[IX_skNaklAssortSG_001]), SEEK:([skNaklAssortSG].[idNaklAssort]=[F].[id]) ORDERED FORWARD)                                                                   77          12          11          Index Seek                     Index Seek                     OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortSG].[IX_skNaklAssortSG_001]), SEEK:([skNaklAssortSG].[idNaklAssort]=[F].[id]) ORDERED FORWARD                                                                                                   [skNaklAssortSG].[id], [skNaklAssortSG].[idNaklAssort]                                          12,62841      0,003203475   9,242914E-05  41          0,003295904      [skNaklAssortSG].[id], [skNaklAssortSG].[idNaklAssort]                            NULL     PLAN_ROW                       0        1
632732      317                                    |         |--Nested Loops(Inner Join, OUTER REFERENCES:([otkInferBVKS].[idInferBVK]) WITH PREFETCH)                                                                                                                                   77          13          11          Nested Loops                   Inner Join                     OUTER REFERENCES:([otkInferBVKS].[idInferBVK]) WITH PREFETCH                                                                                                                                                                                 NULL                                                                                            2165,538      0             0,009052468   47          0,6857834        [otkInferBVKS].[idNaklAssortS]                                                    NULL     PLAN_ROW                       0        1
647631      317                                    |              |--Hash Match(Inner Join, HASH:([otkInferBrakKind].[idInfer])=([otkInferBVKS].[id]))                                                                                                                                   77          15          13          Hash Match                     Inner Join                     HASH:([otkInferBrakKind].[idInfer])=([otkInferBVKS].[id])                                                                                                                                                                                    NULL                                                                                            2165,662      0             0,2898867     23          0,5193672        [otkInferBVKS].[idInferBVK], [otkInferBVKS].[idNaklAssortS]                       NULL     PLAN_ROW                       0        1
693279      317                                    |              |    |--Index Scan(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBrakKind].[IX_otkInferBrakKind_002]))                                                                                                                      77          16          15          Index Scan                     Index Scan                     OBJECT:([st_gazmash2_pro].[dbo].[otkInferBrakKind].[IX_otkInferBrakKind_002])                                                                                                                                                                [otkInferBrakKind].[idInfer]                                                                    2187          0,03980072    0,0024842     35          0,04228492       [otkInferBrakKind].[idInfer]                                                      NULL     PLAN_ROW                       0        1
17263820    317                                    |              |    |--Index Scan(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVKS].[IX_otkInferBVKS_005]))                                                                                                                              77          17          15          Index Scan                     Index Scan                     OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVKS].[IX_otkInferBVKS_005])                                                                                                                                                                        [otkInferBVKS].[idInferBVK], [otkInferBVKS].[id], [otkInferBVKS].[idNaklAssortS]                54460         0,06360406    0,02999225    37          0,1871926        [otkInferBVKS].[idInferBVK], [otkInferBVKS].[id], [otkInferBVKS].[idNaklAssortS]  NULL     PLAN_ROW                       0        1
632732      647631                                 |              |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVK].[IX_otkInferBVK_006]), SEEK:([otkInferBVK].[FlagDel]=0 AND [otkInferBVK].[id]=[otkInferBVKS].[idInferBVK]) ORDERED FORWARD)                                77          19          13          Index Seek                     Index Seek                     OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVK].[IX_otkInferBVK_006]), SEEK:([otkInferBVK].[FlagDel]=0 AND [otkInferBVK].[id]=[otkInferBVKS].[idInferBVK]) ORDERED FORWARD                                                                     NULL                                                                                            1             0,003203475   7,9607E-05    31          0,1573638        NULL                                                                              NULL     PLAN_ROW                       0        2165,662
0           633                                    |--Nested Loops(Inner Join)                                                                                                                                                                                                           77          21          8           Nested Loops                   Inner Join                     NULL                                                                                                                                                                                                                                         NULL                                                                                            1,380682      0             5,77125E-06   80          0,7201875        [skNaklAssortArhSG].[idNaklAssort]                                                NULL     PLAN_ROW                       0        1
0           633                                         |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortArhG].[IX_skNaklAssortArhG_idUDidUKidAgDidAgK]), SEEK:([skNaklAssortArhG].[id]=[F].[id]),  WHERE:([skNaklAssortArhG].[DateDoc]>=[@DB] AND [skNaklAssortArhG].[DateDoc 77          22          21          Index Seek                     Index Seek                     OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortArhG].[IX_skNaklAssortArhG_idUDidUKidAgDidAgK]), SEEK:([skNaklAssortArhG].[id]=[F].[id]),  WHERE:([skNaklAssortArhG].[DateDoc]>=[@DB] AND [skNaklAssortArhG].[DateDoc]<=[@DE]) ORDERED FORWARD  [skNaklAssortArhG].[DateDoc]                                                                    1             0,003203475   7,9603E-05    68          0,003283078      [skNaklAssortArhG].[DateDoc]                                                      NULL     PLAN_ROW                       0        1
0           0                                           |--Hash Match(Inner Join, HASH:([skNaklAssortArhSG].[id])=([otkInferBVKS].[idNaklAssortS]))                                                                                                                                      77          23          21          Hash Match                     Inner Join                     HASH:([skNaklAssortArhSG].[id])=([otkInferBVKS].[idNaklAssortS])                                                                                                                                                                             NULL                                                                                            1,380682      0             0,02781462    19          0,7168978        [skNaklAssortArhSG].[idNaklAssort]                                                NULL     PLAN_ROW                       0        1
0           0                                                |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortArhSG].[IX_skNaklAssortArhSG_idNA_A_I_Q]), SEEK:([skNaklAssortArhSG].[idNaklAssort]=[F].[id]) ORDERED FORWARD)                                                   77          24          23          Index Seek                     Index Seek                     OBJECT:([st_gazmash2_pro].[dbo].[skNaklAssortArhSG].[IX_skNaklAssortArhSG_idNA_A_I_Q]), SEEK:([skNaklAssortArhSG].[idNaklAssort]=[F].[id]) ORDERED FORWARD                                                                                   [skNaklAssortArhSG].[id], [skNaklAssortArhSG].[idNaklAssort]                                    13,43266      0,003203475   9,331623E-05  49          0,003296791      [skNaklAssortArhSG].[id], [skNaklAssortArhSG].[idNaklAssort]                      NULL     PLAN_ROW                       0        1
0           0                                                |--Nested Loops(Inner Join, OUTER REFERENCES:([otkInferBVKS].[idInferBVK]) WITH PREFETCH)                                                                                                                                   77          25          23          Nested Loops                   Inner Join                     OUTER REFERENCES:([otkInferBVKS].[idInferBVK]) WITH PREFETCH                                                                                                                                                                                 NULL                                                                                            2165,538      0             0,009052468   47          0,6857834        [otkInferBVKS].[idNaklAssortS]                                                    NULL     PLAN_ROW                       0        1
0           0                                                     |--Hash Match(Inner Join, HASH:([otkInferBrakKind].[idInfer])=([otkInferBVKS].[id]))                                                                                                                                   77          27          25          Hash Match                     Inner Join                     HASH:([otkInferBrakKind].[idInfer])=([otkInferBVKS].[id])                                                                                                                                                                                    NULL                                                                                            2165,662      0             0,2898867     23          0,5193672        [otkInferBVKS].[idInferBVK], [otkInferBVKS].[idNaklAssortS]                       NULL     PLAN_ROW                       0        1
0           0                                                     |    |--Index Scan(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBrakKind].[IX_otkInferBrakKind_002]))                                                                                                                      77          28          27          Index Scan                     Index Scan                     OBJECT:([st_gazmash2_pro].[dbo].[otkInferBrakKind].[IX_otkInferBrakKind_002])                                                                                                                                                                [otkInferBrakKind].[idInfer]                                                                    2187          0,03980072    0,0024842     35          0,04228492       [otkInferBrakKind].[idInfer]                                                      NULL     PLAN_ROW                       0        1
0           0                                                     |    |--Index Scan(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVKS].[IX_otkInferBVKS_005]))                                                                                                                              77          29          27          Index Scan                     Index Scan                     OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVKS].[IX_otkInferBVKS_005])                                                                                                                                                                        [otkInferBVKS].[idInferBVK], [otkInferBVKS].[id], [otkInferBVKS].[idNaklAssortS]                54460         0,06360406    0,02999225    37          0,1871926        [otkInferBVKS].[idInferBVK], [otkInferBVKS].[id], [otkInferBVKS].[idNaklAssortS]  NULL     PLAN_ROW                       0        1
0           0                                                     |--Index Seek(OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVK].[IX_otkInferBVK_006]), SEEK:([otkInferBVK].[FlagDel]=0 AND [otkInferBVK].[id]=[otkInferBVKS].[idInferBVK]) ORDERED FORWARD)                                77          31          25          Index Seek                     Index Seek                     OBJECT:([st_gazmash2_pro].[dbo].[otkInferBVK].[IX_otkInferBVK_006]), SEEK:([otkInferBVK].[FlagDel]=0 AND [otkInferBVK].[id]=[otkInferBVKS].[idInferBVK]) ORDERED FORWARD                                                                     NULL                                                                                            1             0,003203475   7,9607E-05    31          0,1573638        NULL                                                                              NULL     PLAN_ROW                       0        2165,662
17 апр 12, 10:05    [12425582]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
dubok
Member

Откуда: Kovrov
Сообщений: 173
на счет закомментировать строку все понятно, просто таблица не участвует в плане выполнения поэтому, все быстро. Буду разбираться с ней, что там не так. CASE тут действительно не при чем.
17 апр 12, 10:21    [12425648]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
dubok
на счет закомментировать строку все понятно, просто таблица не участвует в плане выполнения поэтому, все быстро. Буду разбираться с ней, что там не так. CASE тут действительно не при чем.
Да, причём это не таблица, а функция.
17 апр 12, 10:29    [12425708]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
временные таблицы
Guest
А если во временные убрать?

DECLARE @DB datetime, @DE datetime SELECT @DB = '20120401', @DE = '20120430'

SELECT * 
INTO #F
FROM dbo.f_skNaklAssortList (1010,@DB,@DE,124,-1,-1,-1) 

SELECT * 
INTO #NA2Inf
FROM dbo.f_skNaklAssort2Infer(@DB,@DE)   

SELECT 
		[id]	= F.id,
		[Text]	= CAST(F.NumberDoc AS char(20)) COLLATE Cyrillic_General_CI_AS
			+';BOLD='+CASE WHEN NA2Inf.idNaklAssort IS NOT NULL THEN '1' ELSE '0' END
	FROM 	#F AS F
		LEFT JOIN #NA2Inf as NA2Inf ON NA2Inf.idNaklAssort = F.id
17 апр 12, 10:40    [12425779]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
dubok
Member

Откуда: Kovrov
Сообщений: 173
временные таблицы
А если во временные убрать?

Именно так и сделал! Спасибо. Все зафурычило как надо!
17 апр 12, 10:54    [12425861]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
dubok
Member

Откуда: Kovrov
Сообщений: 173
Кстати, а что правильнее будет написать:
SELECT * INTO #T FROM T
или
DECLARE @T TABLE(id int)
INSERT INTO @T(id) SELECT id FROM T
?
17 апр 12, 10:57    [12425893]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
временные таблицы
Guest
dubok,

ИМХО
правильней сначала таблицу(табличную переменную) создать
потом в нее залить
17 апр 12, 11:05    [12425944]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
dubok
Кстати, а что правильнее будет написать:
SELECT * INTO #T FROM T
или
DECLARE @T TABLE(id int)
INSERT INTO @T(id) SELECT id FROM T
?
второй вариант
17 апр 12, 11:41    [12426232]     Ответить | Цитировать Сообщить модератору
 Re: в SELECT присутствие CASE увеличивает время выполнения запроса  [new]
dubok
Member

Откуда: Kovrov
Сообщений: 173
Всем спасибо!
17 апр 12, 11:52    [12426319]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить