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

Откуда:
Сообщений: 247
Есть временные таблицы, которые я создал как фильтры из реальных таблиц, чтобы избежать Table Spool/Lazy spool:
  DECLARE @TBL_LIST_DS TABLE
  (
    List_Code varchar(50) PRIMARY KEY,
    Description varchar(250)
  );
  
  INSERT INTO @TBL_LIST_DS
    SELECT List_Code, Description
    FROM List as l
    WHERE l.List_Type_Code = '...';
  
  DECLARE @TBL_LIST_OT TABLE
  (
    List_Code varchar(50) PRIMARY KEY,
    Description varchar(250)
  );
  
  INSERT INTO @TBL_LIST_OT
    SELECT List_Code, Description
    FROM List as l
    WHERE l.List_Type_Code = '...';
  
  DECLARE @TBL_API_LIST TABLE
  (
    List_Code varchar(50),
    Lead_Source varchar(150),
    Description varchar(250)
    UNIQUE CLUSTERED (List_Code, Lead_Source)
  );
  
  INSERT INTO @TBL_API_LIST
    SELECT List_Code, Lead_Source, Description
    FROM API_List as l
    WHERE l.List_Type_Code = '...';


В самом запросе они появляются вот так:

...
   LEFT JOIN Project     AS prj /*WITH(NOLOCK)*/ ON (prj.Project_ID = l.Project_ID)
    LEFT JOIN @TBL_LIST_DS  AS lpm  /*WITH(NOLOCK)*/ ON (lpm.List_Code = prj.PM_Code)
    LEFT JOIN @TBL_API_LIST AS lps  /*WITH(NOLOCK)*/ ON ((lps.Lead_Source = prj.Lead_Source) AND (lps.List_Code = prj.Stage_Code))
    LEFT JOIN @TBL_LIST_OT  AS lot  /*WITH(NOLOCK)*/ ON (lot.List_Code = prj.OT_Code)
...


В результате вот кусок реального плана выполнения:
Картинка с другого сайта.
Почему index scan, а не index seek? Последнее же явно было бы выгодней?
15 авг 13, 17:55    [14714846]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
Glory
Member

Откуда:
Сообщений: 104760
А List_Code varchar(50) везде varchar(50) ? И в таблице List ? И в Project.PK_Project ?
15 авг 13, 18:25    [14715048]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

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

да, конечно.
PM_Code varchar(50),
Lead_Source varchar(150),
Stage_Code varchar(50),
OT_Code varchar(50)
15 авг 13, 18:38    [14715096]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

Откуда:
Сообщений: 247
И в List
List_Code varchar(50), хотя, ИМХО, єто уже не важно...
15 авг 13, 18:41    [14715106]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
Glory
Member

Откуда:
Сообщений: 104760
зеленый админ
да, конечно.

Спулится то Project.PK_Project. По какому выражению идут Nested Loops ?
15 авг 13, 18:44    [14715119]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

Откуда:
Сообщений: 247
Все они спулятся, но project я кешировать не могу - зажирно.
Начнем с того, что сам index spool имеет предикат - тут как раз project вяжется на таблицу "выше" по своему id
А впрочем, вот эта часть запроса в XML:
<RelOp AvgRowSize="394" EstimateCPU="4.18E-06" EstimateIO="0" EstimateRebinds="8462.53" EstimateRewinds="0.137728" EstimateRows="1" LogicalOp="Left Outer Join" NodeId="458" Parallel="false" PhysicalOp="Nested Loops" EstimatedTotalSubtreeCost="7.69007">
                      <OutputList>
                        <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Sq_Ft" />
                        <ColumnReference Table="@TBL_LIST_DS" Alias="[lpm]" Column="Description" />
                        <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="Description" />
                        <ColumnReference Table="@TBL_LIST_OT" Alias="[lot]" Column="Description" />
                      </OutputList>
                      <RunTimeInformation>
                        <RunTimeCountersPerThread Thread="0" ActualRows="1170" ActualEndOfScans="613" ActualExecutions="1783" />
                      </RunTimeInformation>
                      <NestedLoops Optimized="false">
                        <Predicate>
                          <ScalarOperator ScalarString="@TBL_LIST_DS.[List_Code] as [lpm].[List_Code]=[SP].[dbo].[Project].[PM_Code] as [prj].[PM_Code]">
                            <Compare CompareOp="EQ">
                              <ScalarOperator>
                                <Identifier>
                                  <ColumnReference Table="@TBL_LIST_DS" Alias="[lpm]" Column="List_Code" />
                                </Identifier>
                              </ScalarOperator>
                              <ScalarOperator>
                                <Identifier>
                                  <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="PM_Code" />
                                </Identifier>
                              </ScalarOperator>
                            </Compare>
                          </ScalarOperator>
                        </Predicate>
                        <RelOp AvgRowSize="276" EstimateCPU="4.18E-06" EstimateIO="0" EstimateRebinds="8462.53" EstimateRewinds="0.137728" EstimateRows="1" LogicalOp="Left Outer Join" NodeId="459" Parallel="false" PhysicalOp="Nested Loops" EstimatedTotalSubtreeCost="6.97525">
                          <OutputList>
                            <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Sq_Ft" />
                            <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="PM_Code" />
                            <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="Description" />
                            <ColumnReference Table="@TBL_LIST_OT" Alias="[lot]" Column="Description" />
                          </OutputList>
                          <RunTimeInformation>
                            <RunTimeCountersPerThread Thread="0" ActualRows="1170" ActualEndOfScans="613" ActualExecutions="1783" />
                          </RunTimeInformation>
                          <NestedLoops Optimized="false">
                            <Predicate>
                              <ScalarOperator ScalarString="@TBL_LIST_OT.[List_Code] as [lot].[List_Code]=[SP].[dbo].[Project].[OT_Code] as [prj].[OT_Code]">
                                <Compare CompareOp="EQ">
                                  <ScalarOperator>
                                    <Identifier>
                                      <ColumnReference Table="@TBL_LIST_OT" Alias="[lot]" Column="List_Code" />
                                    </Identifier>
                                  </ScalarOperator>
                                  <ScalarOperator>
                                    <Identifier>
                                      <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="OT_Code" />
                                    </Identifier>
                                  </ScalarOperator>
                                </Compare>
                              </ScalarOperator>
                            </Predicate>
                            <RelOp AvgRowSize="155" EstimateCPU="4.18E-06" EstimateIO="0" EstimateRebinds="8462.53" EstimateRewinds="0.137728" EstimateRows="1" LogicalOp="Left Outer Join" NodeId="460" Parallel="false" PhysicalOp="Nested Loops" EstimatedTotalSubtreeCost="6.26042">
                              <OutputList>
                                <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="OT_Code" />
                                <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Sq_Ft" />
                                <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="PM_Code" />
                                <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="Description" />
                              </OutputList>
                              <RunTimeInformation>
                                <RunTimeCountersPerThread Thread="0" ActualRows="1170" ActualEndOfScans="613" ActualExecutions="1783" />
                              </RunTimeInformation>
                              <NestedLoops Optimized="false">
                                <Predicate>
                                  <ScalarOperator ScalarString="@TBL_API_LIST.[Lead_Source] as [lps].[Lead_Source]=[SP].[dbo].[Project].[Lead_Source] as [prj].[Lead_Source] AND @TBL_API_LIST.[List_Code] as [lps].[List_Code]=[SP].[dbo].[Project].[Stage_Code] as [prj].[Stage_Code]">
                                    <Logical Operation="AND">
                                      <ScalarOperator>
                                        <Compare CompareOp="EQ">
                                          <ScalarOperator>
                                            <Identifier>
                                              <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="Lead_Source" />
                                            </Identifier>
                                          </ScalarOperator>
                                          <ScalarOperator>
                                            <Identifier>
                                              <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Lead_Source" />
                                            </Identifier>
                                          </ScalarOperator>
                                        </Compare>
                                      </ScalarOperator>
                                      <ScalarOperator>
                                        <Compare CompareOp="EQ">
                                          <ScalarOperator>
                                            <Identifier>
                                              <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="List_Code" />
                                            </Identifier>
                                          </ScalarOperator>
                                          <ScalarOperator>
                                            <Identifier>
                                              <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Stage_Code" />
                                            </Identifier>
                                          </ScalarOperator>
                                        </Compare>
                                      </ScalarOperator>
                                    </Logical>
                                  </ScalarOperator>
                                </Predicate>
                                <RelOp AvgRowSize="39" EstimateCPU="0.0239171" EstimateIO="1.01988" EstimateRebinds="8462.53" EstimateRewinds="0.137728" EstimateRows="1" LogicalOp="Eager Spool" NodeId="461" Parallel="false" PhysicalOp="Index Spool" EstimatedTotalSubtreeCost="5.5422">
                                  <OutputList>
                                    <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Stage_Code" />
                                    <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="OT_Code" />
                                    <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Sq_Ft" />
                                    <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="PM_Code" />
                                    <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Lead_Source" />
                                  </OutputList>
                                  <RunTimeInformation>
                                    <RunTimeCountersPerThread Thread="0" ActualRebinds="1235" ActualRewinds="548" ActualRows="1170" ActualEndOfScans="613" ActualExecutions="1783" />
                                  </RunTimeInformation>
                                  <Spool>
                                    <SeekPredicateNew>
                                      <SeekKeys>
                                        <Prefix ScanType="EQ">
                                          <RangeColumns>
                                            <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Project_ID" />
                                          </RangeColumns>
                                          <RangeExpressions>
                                            <ScalarOperator ScalarString="[SP].[dbo].[Lead].[Project_ID] as [l].[Project_ID]">
                                              <Identifier>
                                                <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Lead]" Alias="[l]" Column="Project_ID" />
                                              </Identifier>
                                            </ScalarOperator>
                                          </RangeExpressions>
                                        </Prefix>
                                      </SeekKeys>
                                    </SeekPredicateNew>
                                    <RelOp AvgRowSize="43" EstimateCPU="0.0261819" EstimateIO="1.82238" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="23659" LogicalOp="Clustered Index Scan" NodeId="462" Parallel="false" PhysicalOp="Clustered Index Scan" EstimatedTotalSubtreeCost="1.84857" TableCardinality="23659">
                                      <OutputList>
                                        <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Project_ID" />
                                        <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Stage_Code" />
                                        <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="OT_Code" />
                                        <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Sq_Ft" />
                                        <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="PM_Code" />
                                        <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Lead_Source" />
                                      </OutputList>
                                      <RunTimeInformation>
                                        <RunTimeCountersPerThread Thread="0" ActualRows="23659" ActualEndOfScans="1" ActualExecutions="1" />
                                      </RunTimeInformation>
                                      <IndexScan Ordered="false" ForcedIndex="false" ForceScan="false" NoExpandHint="false">
                                        <DefinedValues>
                                          <DefinedValue>
                                            <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Project_ID" />
                                          </DefinedValue>
                                          <DefinedValue>
                                            <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Stage_Code" />
                                          </DefinedValue>
                                          <DefinedValue>
                                            <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="OT_Code" />
                                          </DefinedValue>
                                          <DefinedValue>
                                            <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Sq_Ft" />
                                          </DefinedValue>
                                          <DefinedValue>
                                            <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="PM_Code" />
                                          </DefinedValue>
                                          <DefinedValue>
                                            <ColumnReference Database="[SP]" Schema="[dbo]" Table="[Project]" Alias="[prj]" Column="Lead_Source" />
                                          </DefinedValue>
                                        </DefinedValues>
                                        <Object Database="[SP]" Schema="[dbo]" Table="[Project]" Index="[PK_Project]" Alias="[prj]" IndexKind="Clustered" />
                                      </IndexScan>
                                    </RelOp>
                                  </Spool>
                                </RelOp>
                                <RelOp AvgRowSize="240" EstimateCPU="7.96E-05" EstimateIO="0.0032035" EstimateRebinds="0" EstimateRewinds="8462.66" EstimateRows="1" LogicalOp="Clustered Index Scan" NodeId="463" Parallel="false" PhysicalOp="Clustered Index Scan" EstimatedTotalSubtreeCost="0.676911" TableCardinality="0">
                                  <OutputList>
                                    <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="List_Code" />
                                    <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="Lead_Source" />
                                    <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="Description" />
                                  </OutputList>
                                  <RunTimeInformation>
                                    <RunTimeCountersPerThread Thread="0" ActualRows="136943" ActualEndOfScans="979" ActualExecutions="1170" />
                                  </RunTimeInformation>
                                  <IndexScan Ordered="false" ForcedIndex="false" ForceScan="false" NoExpandHint="false">
                                    <DefinedValues>
                                      <DefinedValue>
                                        <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="List_Code" />
                                      </DefinedValue>
                                      <DefinedValue>
                                        <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="Lead_Source" />
                                      </DefinedValue>
                                      <DefinedValue>
                                        <ColumnReference Table="@TBL_API_LIST" Alias="[lps]" Column="Description" />
                                      </DefinedValue>
                                    </DefinedValues>
                                    <Object Table="[@TBL_API_LIST]" Index="[UQ__#53A266A__67E92ACE558AAF1E]" Alias="[lps]" />
                                  </IndexScan>
                                </RelOp>
                              </NestedLoops>
                            </RelOp>
                            <RelOp AvgRowSize="163" EstimateCPU="7.96E-05" EstimateIO="0.0032035" EstimateRebinds="0" EstimateRewinds="8462.66" EstimateRows="1" LogicalOp="Clustered Index Scan" NodeId="465" Parallel="false" PhysicalOp="Clustered Index Scan" EstimatedTotalSubtreeCost="0.676911" TableCardinality="0">
                              <OutputList>
                                <ColumnReference Table="@TBL_LIST_OT" Alias="[lot]" Column="List_Code" />
                                <ColumnReference Table="@TBL_LIST_OT" Alias="[lot]" Column="Description" />
                              </OutputList>
                              <RunTimeInformation>
                                <RunTimeCountersPerThread Thread="0" ActualRows="5595" ActualEndOfScans="1016" ActualExecutions="1170" />
                              </RunTimeInformation>
                              <IndexScan Ordered="false" ForcedIndex="false" ForceScan="false" NoExpandHint="false">
                                <DefinedValues>
                                  <DefinedValue>
                                    <ColumnReference Table="@TBL_LIST_OT" Alias="[lot]" Column="List_Code" />
                                  </DefinedValue>
                                  <DefinedValue>
                                    <ColumnReference Table="@TBL_LIST_OT" Alias="[lot]" Column="Description" />
                                  </DefinedValue>
                                </DefinedValues>
                                <Object Table="[@TBL_LIST_OT]" Index="[PK__#4FD1D5C__D0CC246951BA1E3A]" Alias="[lot]" />
                              </IndexScan>
                            </RelOp>
                          </NestedLoops>
                        </RelOp>
                        <RelOp AvgRowSize="163" EstimateCPU="7.96E-05" EstimateIO="0.0032035" EstimateRebinds="0" EstimateRewinds="8462.66" EstimateRows="1" LogicalOp="Clustered Index Scan" NodeId="467" Parallel="false" PhysicalOp="Clustered Index Scan" EstimatedTotalSubtreeCost="0.676911" TableCardinality="0">
                          <OutputList>
                            <ColumnReference Table="@TBL_LIST_DS" Alias="[lpm]" Column="List_Code" />
                            <ColumnReference Table="@TBL_LIST_DS" Alias="[lpm]" Column="Description" />
                          </OutputList>
                          <RunTimeInformation>
                            <RunTimeCountersPerThread Thread="0" ActualRows="13404" ActualEndOfScans="1092" ActualExecutions="1170" />
                          </RunTimeInformation>
                          <IndexScan Ordered="false" ForcedIndex="false" ForceScan="false" NoExpandHint="false">
                            <DefinedValues>
                              <DefinedValue>
                                <ColumnReference Table="@TBL_LIST_DS" Alias="[lpm]" Column="List_Code" />
                              </DefinedValue>
                              <DefinedValue>
                                <ColumnReference Table="@TBL_LIST_DS" Alias="[lpm]" Column="Description" />
                              </DefinedValue>
                            </DefinedValues>
                            <Object Table="[@TBL_LIST_DS]" Index="[PK__#4C0144E__D0CC24694DE98D56]" Alias="[lpm]" />
                          </IndexScan>
                        </RelOp>
                      </NestedLoops>
                    </RelOp>


Меня смущает TableCardinality="0", может, в этом загвоздка?
15 авг 13, 19:14    [14715192]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Считается, что в каждой табличной переменной всегда одна строка
15 авг 13, 19:20    [14715212]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

Откуда:
Сообщений: 247
Cygapb-007,

вот я и спрашиваю, может ли этот факт повлиять на отказ от Index Seek?
15 авг 13, 19:26    [14715233]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

Откуда:
Сообщений: 247
Переделал @TBL_API_LIST -> #TBL_API_LIST
и получил желаемый index seek и... меньшую производительность!
Картинка с другого сайта.
Т.е. или ищи по винчаку или просматривай по RAM, а поиск по RAM - дудки?
15 авг 13, 20:16    [14715313]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
А при чём тут RAM?
Табличные переменные живут там же, где и временные таблицы.
15 авг 13, 21:35    [14715517]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

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

хм... ну ок. Значит, тут просто нужен диез... Но все-таки, принципиально, зачем все эти unique и primary key ограничения по таблице-переменной, если поиск в ней такой никакой?
16 авг 13, 00:36    [14716125]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
tgtgtgt
Guest
зеленый админ
iap,

хм... ну ок. Значит, тут просто нужен диез... Но все-таки, принципиально, зачем все эти unique и primary key ограничения по таблице-переменной, если поиск в ней такой никакой?


вероятно в этом случае они задумывались как констрейнты и не более. и видимо предполагалось что использовать будут их для маленького набора строк, оно тогда не будет выпиливаться на диск и с большой вероятностью будет жить в памяти. а seek нету вероятно потому что по предполагаемому маленькому набору строк нет большой разницы хоть seek хоть scan.
16 авг 13, 00:45    [14716135]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
зеленый админ
iap,

хм... ну ок. Значит, тут просто нужен диез...
или OPTION(RECOMPILE)
16 авг 13, 01:11    [14716144]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

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

Хм, как-то не вяжется. Нет, там долен быть seek, иначе как обїяснить вот такие тесты
тут
16 авг 13, 11:57    [14717673]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

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

Подтверждаю! Помогло! Сгенерировало "Clustered Index Seek" на @TBL_API_LIST! И table cardinality правильный! Видимо, таки в нем все дело!
16 авг 13, 12:04    [14717727]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

Откуда:
Сообщений: 247
зеленый админ,

Да еще, вот официальное подтверждение догадок.
16 авг 13, 15:57    [14719443]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Cygapb-007
Считается, что в каждой табличной переменной всегда одна строка
И что?
Если там одна строка, то разница между Scan и Seek нет никакой.
А так как там предположительно одна строка, то и подавно.
MS такой MS.

Меня уже задолбал этот "аргумент" взятый с потолка, явно для отмазки.

Структура первична, статистика вторична для всех видов запросов это работает на фсе 146%.
16 авг 13, 16:14    [14719524]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Самое главное, что эта тема подымается уже 100500 раз.
А на connection до сих пор не завели этот явный баг.
Примечательно то что наличие вот таких вот статей, которые привёл зеленый админ, коих кстати пруд пруди, полностью отметает мысль что-то с этим надо что-то делать.

ReCompile - не выход.

PS: Кстати, "крики" таких как я тоже отметают это желание напрочь.
Доколе ...
16 авг 13, 16:20    [14719553]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Mnior
Cygapb-007
Считается, что в каждой табличной переменной всегда одна строка
И что?
Если там одна строка, то разница между Scan и Seek нет никакой.
А так как там предположительно одна строка, то и подавно.
MS такой MS.

Меня уже задолбал этот "аргумент" взятый с потолка, явно для отмазки.

Структура первична, статистика вторична для всех видов запросов это работает на фсе 146%.
Это вы мне претензию выкатываете, или на судьбу жалуетесь?
16 авг 13, 16:21    [14719561]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31437
зеленый админ
Mind,

Подтверждаю! Помогло! Сгенерировало "Clustered Index Seek" на @TBL_API_LIST! И table cardinality правильный! Видимо, таки в нем все дело!
А если в @TBL_API_LIST поменять констрейн на ПК?
16 авг 13, 16:24    [14719581]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
Cygapb-007
или на судьбу жалуетесь?


не на судьбу, на MS ;)
16 авг 13, 16:24    [14719583]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
StarikNavy
Cygapb-007
или на судьбу жалуетесь?


не на судьбу, на MS ;)
На судьбу работать с продукцией MS :))
16 авг 13, 16:26    [14719599]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Cygapb-007
На судьбу работать с продукцией MS :))
Заседание анонимных пользователей продукцией этой фирмы в самом разгаре.

Все дружно поприветствовали овациями нового пострадавшего - зеленый админ.
Добро пожаловать в клуб!
16 авг 13, 17:57    [14720188]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

Откуда:
Сообщений: 247
Mnior
Самое главное, что эта тема подымается уже 100500 раз.
А на connection до сих пор не завели этот явный баг.
Примечательно то что наличие вот таких вот статей, которые привёл зеленый админ, коих кстати пруд пруди, полностью отметает мысль что-то с этим надо что-то делать.

ReCompile - не выход.

PS: Кстати, "крики" таких как я тоже отметают это желание напрочь.
Доколе ...


На коннекшн - это где? Покажите - заведем. Есть предложение в качестве обхода включить WITH(FORCESEEK) таки для переменных тоже. И да, насчет recomlile, в смысле не выход - согласен. Так что оно мне помогло не решить проблему, а понять, что произошло.
16 авг 13, 19:54    [14720538]     Ответить | Цитировать Сообщить модератору
 Re: table переменная: index scan  [new]
зеленый админ
Member

Откуда:
Сообщений: 247
alexeyvg
зеленый админ
Mind,

Подтверждаю! Помогло! Сгенерировало "Clustered Index Seek" на @TBL_API_LIST! И table cardinality правильный! Видимо, таки в нем все дело!
А если в @TBL_API_LIST поменять констрейн на ПК?

НЕ, мимо. Не поможет. Доктор сказал в морг. Если план считает, что в таблице нет (или 1, хз) записей, под пулеметом не заставишь искать по индексу.
16 авг 13, 19:58    [14720548]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить