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

Откуда: Россия
Сообщений: 112
Помогите плизз убрать, не могу понять, передаю вроде все что из другого индекса, но берет кластерный и в итоге KEY LOOKUP.
Насильно, что говорит что все равноделаю что то не так, если передать index(accktid) толку нет.

+ Запрос

IF OBJECT_ID(N'tempdb.dbo.#БухСчетаТЕСТ') IS NOT NULL DROP TABLE #БухСчетаТЕСТ

CREATE TABLE #БухСчетаТЕСТ (
СчетID char(9) PRIMARY KEY ,
Счет varchar(11) NOT NULL,
СчетIDГр char(9) NOT NULL,
СчетГр varchar(11) NOT NULL,
act varchar(2) NOT NULL,
isfolder bit NOT NULL,
currency bit NOT NULL,
amount bit NOT NULL,
vid0 int NOT NULL,
vid1 int NOT NULL,
vid2 int NOT NULL,
vid3 int NOT NULL,
vid4 int NOT NULL

)


INSERT INTO #БухСчетаТЕСТ (СчетID, Счет, СчетIDГр, СчетГр, act, isfolder, currency, amount,vid0,vid1,vid2,vid3,vid4)
SELECT isnull(acc.[ID],accGr.[ID]) as СчетID
      ,isnull(acc.[SCHKOD],accGr.[SCHKOD]) as Счет
      ,accGr.[ID] as СчетIDГр
      ,accGr.[SCHKOD] as СчетГр
	   ,CASE 
			WHEN isnull(acc.ACTIVE,accGr.ACTIVE) = 1 THEN 'А'
			WHEN isnull(acc.ACTIVE,accGr.ACTIVE) = 2 THEN 'П'
			WHEN isnull(acc.ACTIVE,accGr.ACTIVE) = 3 THEN 'АП' ELSE '--' END as act
	   ,case when isnull(acc.[SCHKOD],'')='' then accGr.isfolder else acc.isfolder end as isfolder
	   ,case when isnull(acc.[SCHKOD],'')='' then accGr.SCHV else acc.SCHV end as currency
	   ,case when isnull(acc.[SCHKOD],'')='' then accGr.SCHKOL else acc.SCHKOL end as amount
	   ,case when isnull(acc.[SCHKOD],'')='' then accGr.SC0 else acc.SC0 end as vid0
,case when isnull(acc.[SCHKOD],'')='' then accGr.SC1 else acc.SC1 end as vid1
,case when isnull(acc.[SCHKOD],'')='' then accGr.SC2 else acc.SC2 end as vid2
,case when isnull(acc.[SCHKOD],'')='' then accGr.SC3 else acc.SC3 end as vid3
,case when isnull(acc.[SCHKOD],'')='' then accGr.SC4 else acc.SC4 end as vid4

FROM _1SACCS as accGr with (nolock)
left join _1SACCS as acc with (nolock) on left(acc.schkod,LEN(accGr.SCHKOD))=accGr.SCHKOD
                                        and accGr.isfolder=1 and accGr.id<>acc.id
where accGr.id in ('    20   ','    86   ')


SELECT *
FROM _1sentry as EntryKred with (NOLOCK, INDEX(ACCKTID))
	INNER JOIN [dbo].[#БухСчетаТЕСТ] as БухСчета with (NOLOCK) ON БухСчета.СчетID = EntryKred.accktid
WHERE
	EntryKred.date_time_docid >= '20140301'
	AND EntryKred.date_time_docid < '201403117579C0 K2ZFN   '
	AND EntryKred.provkind = ' '
	AND EntryKred.active = ' '
	AND EntryKred.CURRID <> ''



+ План

<?xml version="1.0" encoding="utf-16"?>
<ShowPlanXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0" Build="9.00.4309.00" xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan">
  <BatchSequence>
    <Batch>
      <Statements>
        <StmtSimple StatementCompId="1" StatementEstRows="3291.24" StatementId="1" StatementOptmLevel="FULL" StatementSubTreeCost="10.8512" StatementText="SELECT *
	--EntryKred.accktid   as Счет,
	--БухСчета.act    as ТипСчета,
	
	--EntryKred.KTSC0 as Субконто1,
	--EntryKred.KTSC1 as Субконто2,
	--EntryKred.KTSC2 as Субконто3,
	--EntryKred.KTSC3 as Субконто4,
	--EntryKred.KTSC4 as Субконто5,
	--0.00 as СуммаДт,
	--0.00 as ВСуммаДт,
	--0.00 as КоличествоДт,
	--EntryKred.sum_   as СуммаКт,
	--EntryKred.cursum as ВСуммаКт,
	--EntryKred.amount as КоличествоКт
FROM _1sentry as EntryKred with (NOLOCK, INDEX(ACCKTID))
	INNER JOIN [dbo].[#БухСчетаТЕСТ] as БухСчета with (NOLOCK) ON БухСчета.СчетID = EntryKred.accktid
WHERE
	EntryKred.date_time_docid >= '20140301'
	AND EntryKred.date_time_docid < '201403117579C0 K2ZFN   '
	AND EntryKred.provkind = ' '
	AND EntryKred.active = ' '
	--AND EntryKred.KTSC0 in ('   7OE   ','   VUE   ')
	--AND EntryKred.KTSC1  = '    90   '
	--AND EntryKred.KTSC2  = '   A5W   '
	AND EntryKred.CURRID <> ''
" StatementType="SELECT">
          <StatementSetOptions ANSI_NULLS="false" ANSI_PADDING="false" ANSI_WARNINGS="false" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="false" NUMERIC_ROUNDABORT="false" QUOTED_IDENTIFIER="false" />
          <QueryPlan DegreeOfParallelism="0" MemoryGrant="190" CachedPlanSize="88" CompileTime="19" CompileCPU="19" CompileMemory="432">
            <RelOp AvgRowSize="367" EstimateCPU="0.0137574" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="3291.24" LogicalOp="Inner Join" NodeId="0" Parallel="false" PhysicalOp="Nested Loops" EstimatedTotalSubtreeCost="10.8512">
              <OutputList>
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ROW_ID" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DOCID" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="NUMBER" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CORNO" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DATE_TIME_DOCID" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACCDTID" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACCKTID" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="SUM_" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CURRID" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CURSUM" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="AMOUNT" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="PROVKIND" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACTIVE" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTFLAGS" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTFLAGS" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DOCLINENO" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="SP210" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="SP3450" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC0" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC0" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC0" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC1" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC1" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC1" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC2" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC2" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC2" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC3" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC3" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC3" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC4" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC4" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC4" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC0" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC0" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC0" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC1" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC1" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC1" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC2" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC2" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC2" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC3" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC3" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC3" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC4" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC4" />
                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC4" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетID" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="Счет" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетIDГр" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетГр" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="act" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="isfolder" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="currency" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="amount" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid0" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid1" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid2" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid3" />
                <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid4" />
              </OutputList>
              <RunTimeInformation>
                <RunTimeCountersPerThread Thread="0" ActualRows="6183" ActualEndOfScans="1" ActualExecutions="1" />
              </RunTimeInformation>
              <NestedLoops Optimized="true" WithUnorderedPrefetch="true">
                <OuterReferences>
                  <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="NUMBER" />
                  <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CORNO" />
                  <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DATE_TIME_DOCID" />
                  <ColumnReference Column="Expr1004" />
                </OuterReferences>
                <RelOp AvgRowSize="118" EstimateCPU="0.0137574" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="3291.24" LogicalOp="Inner Join" NodeId="3" Parallel="false" PhysicalOp="Nested Loops" EstimatedTotalSubtreeCost="0.0417744">
                  <OutputList>
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="NUMBER" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CORNO" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DATE_TIME_DOCID" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACCKTID" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CURRID" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="PROVKIND" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACTIVE" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетID" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="Счет" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетIDГр" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетГр" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="act" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="isfolder" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="currency" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="amount" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid0" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid1" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid2" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid3" />
                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid4" />
                  </OutputList>
                  <RunTimeInformation>
                    <RunTimeCountersPerThread Thread="0" ActualRows="6183" ActualEndOfScans="1" ActualExecutions="1" />
                  </RunTimeInformation>
                  <NestedLoops Optimized="false">
                    <OuterReferences>
                      <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетID" />
                    </OuterReferences>
                    <RelOp AvgRowSize="66" EstimateCPU="0.0001592" EstimateIO="0.003125" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="2" LogicalOp="Clustered Index Scan" NodeId="4" Parallel="false" PhysicalOp="Clustered Index Scan" EstimatedTotalSubtreeCost="0.0032842">
                      <OutputList>
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетID" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="Счет" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетIDГр" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетГр" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="act" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="isfolder" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="currency" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="amount" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid0" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid1" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid2" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid3" />
                        <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid4" />
                      </OutputList>
                      <RunTimeInformation>
                        <RunTimeCountersPerThread Thread="0" ActualRows="2" ActualEndOfScans="1" ActualExecutions="1" />
                      </RunTimeInformation>
                      <IndexScan Ordered="false" ForcedIndex="false" NoExpandHint="false">
                        <DefinedValues>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетID" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="Счет" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетIDГр" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетГр" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="act" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="isfolder" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="currency" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="amount" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid0" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid1" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid2" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid3" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="vid4" />
                          </DefinedValue>
                        </DefinedValues>
                        <Object Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Index="[PK__#БухСчетаТЕСТ_____52F3FAC0]" Alias="[БухСчета]" />
                      </IndexScan>
                    </RelOp>
                    <RelOp AvgRowSize="58" EstimateCPU="0.00196841" EstimateIO="0.0112731" EstimateRebinds="1" EstimateRewinds="0" EstimateRows="1645.62" LogicalOp="Index Seek" NodeId="5" Parallel="false" PhysicalOp="Index Seek" EstimatedTotalSubtreeCost="0.0208465">
                      <OutputList>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="NUMBER" />
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CORNO" />
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DATE_TIME_DOCID" />
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACCKTID" />
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CURRID" />
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="PROVKIND" />
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACTIVE" />
                      </OutputList>
                      <RunTimeInformation>
                        <RunTimeCountersPerThread Thread="0" ActualRows="6183" ActualEndOfScans="2" ActualExecutions="2" />
                      </RunTimeInformation>
                      <IndexScan Ordered="true" ScanDirection="FORWARD" ForcedIndex="true" NoExpandHint="false">
                        <DefinedValues>
                          <DefinedValue>
                            <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="NUMBER" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CORNO" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DATE_TIME_DOCID" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACCKTID" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CURRID" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="PROVKIND" />
                          </DefinedValue>
                          <DefinedValue>
                            <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACTIVE" />
                          </DefinedValue>
                        </DefinedValues>
                        <Object Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Index="[ACCKTID]" Alias="[EntryKred]" />
                        <SeekPredicates>
                          <SeekPredicate>
                            <Prefix ScanType="EQ">
                              <RangeColumns>
                                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACCKTID" />
                              </RangeColumns>
                              <RangeExpressions>
                                <ScalarOperator ScalarString="[tempdb].[dbo].[#БухСчетаТЕСТ].[СчетID] as [БухСчета].[СчетID]">
                                  <Identifier>
                                    <ColumnReference Database="[tempdb]" Schema="[dbo]" Table="[#БухСчетаТЕСТ]" Alias="[БухСчета]" Column="СчетID" />
                                  </Identifier>
                                </ScalarOperator>
                              </RangeExpressions>
                            </Prefix>
                            <StartRange ScanType="GE">
                              <RangeColumns>
                                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DATE_TIME_DOCID" />
                                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="PROVKIND" />
                                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACTIVE" />
                              </RangeColumns>
                              <RangeExpressions>
                                <ScalarOperator ScalarString="'20140301'">
                                  <Const ConstValue="'20140301'" />
                                </ScalarOperator>
                                <ScalarOperator ScalarString="' '">
                                  <Const ConstValue="' '" />
                                </ScalarOperator>
                                <ScalarOperator ScalarString="' '">
                                  <Const ConstValue="' '" />
                                </ScalarOperator>
                              </RangeExpressions>
                            </StartRange>
                            <EndRange ScanType="LT">
                              <RangeColumns>
                                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DATE_TIME_DOCID" />
                              </RangeColumns>
                              <RangeExpressions>
                                <ScalarOperator ScalarString="'201403117579C0 K2ZFN   '">
                                  <Const ConstValue="'201403117579C0 K2ZFN   '" />
                                </ScalarOperator>
                              </RangeExpressions>
                            </EndRange>
                          </SeekPredicate>
                        </SeekPredicates>
                        <Predicate>
                          <ScalarOperator ScalarString="[test2].[dbo].[_1SENTRY].[PROVKIND] as [EntryKred].[PROVKIND]=' ' AND [test2].[dbo].[_1SENTRY].[ACTIVE] as [EntryKred].[ACTIVE]=' ' AND [test2].[dbo].[_1SENTRY].[CURRID] as [EntryKred].[CURRID]<>''">
                            <Logical Operation="AND">
                              <ScalarOperator>
                                <Compare CompareOp="EQ">
                                  <ScalarOperator>
                                    <Identifier>
                                      <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="PROVKIND" />
                                    </Identifier>
                                  </ScalarOperator>
                                  <ScalarOperator>
                                    <Const ConstValue="' '" />
                                  </ScalarOperator>
                                </Compare>
                              </ScalarOperator>
                              <ScalarOperator>
                                <Compare CompareOp="EQ">
                                  <ScalarOperator>
                                    <Identifier>
                                      <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACTIVE" />
                                    </Identifier>
                                  </ScalarOperator>
                                  <ScalarOperator>
                                    <Const ConstValue="' '" />
                                  </ScalarOperator>
                                </Compare>
                              </ScalarOperator>
                              <ScalarOperator>
                                <Compare CompareOp="NE">
                                  <ScalarOperator>
                                    <Identifier>
                                      <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CURRID" />
                                    </Identifier>
                                  </ScalarOperator>
                                  <ScalarOperator>
                                    <Const ConstValue="''" />
                                  </ScalarOperator>
                                </Compare>
                              </ScalarOperator>
                            </Logical>
                          </ScalarOperator>
                        </Predicate>
                      </IndexScan>
                    </RelOp>
                  </NestedLoops>
                </RelOp>
                <RelOp AvgRowSize="256" EstimateCPU="0.0001581" EstimateIO="0.003125" EstimateRebinds="3290.24" EstimateRewinds="0" EstimateRows="1" LogicalOp="Clustered Index Seek" NodeId="7" Parallel="false" PhysicalOp="Clustered Index Seek" EstimatedTotalSubtreeCost="10.7956">
                  <OutputList>
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ROW_ID" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DOCID" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACCDTID" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="SUM_" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CURSUM" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="AMOUNT" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTFLAGS" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTFLAGS" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DOCLINENO" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="SP210" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="SP3450" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC0" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC0" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC0" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC1" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC1" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC1" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC2" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC2" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC2" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC3" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC3" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC3" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC4" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC4" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC4" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC0" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC0" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC0" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC1" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC1" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC1" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC2" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC2" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC2" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC3" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC3" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC3" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC4" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC4" />
                    <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC4" />
                  </OutputList>
                  <RunTimeInformation>
                    <RunTimeCountersPerThread Thread="0" ActualRows="6183" ActualEndOfScans="0" ActualExecutions="6183" />
                  </RunTimeInformation>
                  <IndexScan Lookup="true" Ordered="true" ScanDirection="FORWARD" ForcedIndex="true" NoExpandHint="false">
                    <DefinedValues>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ROW_ID" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DOCID" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ACCDTID" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="SUM_" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CURSUM" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="AMOUNT" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTFLAGS" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTFLAGS" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DOCLINENO" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="SP210" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="SP3450" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC0" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC0" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC0" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC1" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC1" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC1" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC2" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC2" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC2" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC3" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC3" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC3" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DTSC4" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VDTSC4" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="ODTSC4" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC0" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC0" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC0" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC1" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC1" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC1" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC2" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC2" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC2" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC3" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC3" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC3" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="KTSC4" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="VKTSC4" />
                      </DefinedValue>
                      <DefinedValue>
                        <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="OKTSC4" />
                      </DefinedValue>
                    </DefinedValues>
                    <Object Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Index="[PK__1SENTRY]" Alias="[EntryKred]" TableReferenceId="-1" />
                    <SeekPredicates>
                      <SeekPredicate>
                        <Prefix ScanType="EQ">
                          <RangeColumns>
                            <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DATE_TIME_DOCID" />
                            <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="NUMBER" />
                            <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CORNO" />
                          </RangeColumns>
                          <RangeExpressions>
                            <ScalarOperator ScalarString="[test2].[dbo].[_1SENTRY].[DATE_TIME_DOCID] as [EntryKred].[DATE_TIME_DOCID]">
                              <Identifier>
                                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="DATE_TIME_DOCID" />
                              </Identifier>
                            </ScalarOperator>
                            <ScalarOperator ScalarString="[test2].[dbo].[_1SENTRY].[NUMBER] as [EntryKred].[NUMBER]">
                              <Identifier>
                                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="NUMBER" />
                              </Identifier>
                            </ScalarOperator>
                            <ScalarOperator ScalarString="[test2].[dbo].[_1SENTRY].[CORNO] as [EntryKred].[CORNO]">
                              <Identifier>
                                <ColumnReference Database="[test2]" Schema="[dbo]" Table="[_1SENTRY]" Alias="[EntryKred]" Column="CORNO" />
                              </Identifier>
                            </ScalarOperator>
                          </RangeExpressions>
                        </Prefix>
                      </SeekPredicate>
                    </SeekPredicates>
                  </IndexScan>
                </RelOp>
              </NestedLoops>
            </RelOp>
          </QueryPlan>
        </StmtSimple>
      </Statements>
    </Batch>
  </BatchSequence>
</ShowPlanXML>



+ Индексы

ALTER TABLE [dbo].[_1SENTRY] ADD  CONSTRAINT [PK__1SENTRY] PRIMARY KEY CLUSTERED 
(
	[DATE_TIME_DOCID] ASC,
	[NUMBER] ASC,
	[CORNO] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]


CREATE NONCLUSTERED INDEX [ACCKTID] ON [dbo].[_1SENTRY] 
(
	[ACCKTID] ASC,
	[DATE_TIME_DOCID] ASC,
	[PROVKIND] ASC,
	[ACTIVE] ASC,
	[CURRID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

24 апр 14, 08:31    [15926658]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса KEY LOOKUP  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
>>но берет кластерный и в итоге KEY LOOKUP.

какой может быть KEY LOOKUP, если вы утверждаете, что используется кластерный?

зы: план в читаемом виде нужно выкладывать, а не XML
24 апр 14, 08:49    [15926711]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса KEY LOOKUP  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
pavlo1c,

Доступ к кластерному у вас по таблице [#БухСчетаТЕСТ], а лукап по таблице [_1SENTRY]. Потому что в индексе [test2].[dbo].[_1SENTRY].[ACCKTID] [EntryKred] есть не все поля.
Каких недостает, вы можете посмотреть изучив список Output оператора Key Lookup (т.е. собственно, а что дает этот оператор, что на выходе).
Это поля:
+

[test2].[dbo].[_1SENTRY].ROW_ID; [test2].[dbo].[_1SENTRY].DOCID; [test2].[dbo].[_1SENTRY].ACCDTID; [test2].[dbo].[_1SENTRY].SUM_; [test2].[dbo].[_1SENTRY].CURSUM; [test2].[dbo].[_1SENTRY].AMOUNT; [test2].[dbo].[_1SENTRY].DTFLAGS; [test2].[dbo].[_1SENTRY].KTFLAGS; [test2].[dbo].[_1SENTRY].DOCLINENO; [test2].[dbo].[_1SENTRY].SP210; [test2].[dbo].[_1SENTRY].SP3450; [test2].[dbo].[_1SENTRY].DTSC0; [test2].[dbo].[_1SENTRY].VDTSC0; [test2].[dbo].[_1SENTRY].ODTSC0; [test2].[dbo].[_1SENTRY].DTSC1; [test2].[dbo].[_1SENTRY].VDTSC1; [test2].[dbo].[_1SENTRY].ODTSC1; [test2].[dbo].[_1SENTRY].DTSC2; [test2].[dbo].[_1SENTRY].VDTSC2; [test2].[dbo].[_1SENTRY].ODTSC2; [test2].[dbo].[_1SENTRY].DTSC3; [test2].[dbo].[_1SENTRY].VDTSC3; [test2].[dbo].[_1SENTRY].ODTSC3; [test2].[dbo].[_1SENTRY].DTSC4; [test2].[dbo].[_1SENTRY].VDTSC4; [test2].[dbo].[_1SENTRY].ODTSC4; [test2].[dbo].[_1SENTRY].KTSC0; [test2].[dbo].[_1SENTRY].VKTSC0; [test2].[dbo].[_1SENTRY].OKTSC0; [test2].[dbo].[_1SENTRY].KTSC1; [test2].[dbo].[_1SENTRY].VKTSC1; [test2].[dbo].[_1SENTRY].OKTSC1; [test2].[dbo].[_1SENTRY].KTSC2; [test2].[dbo].[_1SENTRY].VKTSC2; [test2].[dbo].[_1SENTRY].OKTSC2; [test2].[dbo].[_1SENTRY].KTSC3; [test2].[dbo].[_1SENTRY].VKTSC3; [test2].[dbo].[_1SENTRY].OKTSC3; [test2].[dbo].[_1SENTRY].KTSC4; [test2].[dbo].[_1SENTRY].VKTSC4; [test2].[dbo].[_1SENTRY].OKTSC4

Чтобы избежать лукапа, вам нужно сделать индекс покрывающим. Для этого либо делаете его кластерным, либо добавляете недостающие поля в include.

Возможно, выбирается бОльшая часть таблицы, и поиск по индексу тут менее выгоден чем просто сканирование кластерного. В таком случае, нужно обеспечить более точную оценку (у вас оценивается 1645.62 против реальных 6183).

Кроме того, Lookup конечно снижает производительость, дополнительными 6000 поисков по кластерному индексу, но вообще, это не так уж и много. Если только у вас этот запрос выполняется не в высоконагруженной системе, сотнями раз в секунду (тогда конечно, стоит максимально оптимизировать его), то возникает вопрос - неужели в таком простом плане, этот лукап действительно оказывает серьезное влияние на производительность. Может быть дело и не в плане.
24 апр 14, 09:17    [15926794]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса KEY LOOKUP  [new]
pavlo1c
Member

Откуда: Россия
Сообщений: 112
SomewhereSomehow,

Суть вопроса как раз в том, что она использует кластерный вместо ACCKTID индекса, в этом индексе ровно те поля, которые у меня в условии. Но она его не берет почему то.
Система реально сильно нагружена и это только одна сторона, потом по другой стороне такойже запрос и к итогам потому в общем не так быстро выходит как хотелось бы.
[#БухСчетаТЕСТ] это временная там по сути список счетов по которым строить, если просто передам в условие "in (select)" толку нет все равно.
в индексе который (как мне кажется) подходит ACCKTID есть ровно все поля которые указаны в условии же, вот и не могу понять почему все равно кластерный использует?
24 апр 14, 09:44    [15926905]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса KEY LOOKUP  [new]
pavlo1c
Member

Откуда: Россия
Сообщений: 112
Knyazev Alexey,

так?

К сообщению приложен файл. Размер - 38Kb
24 апр 14, 09:47    [15926917]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса KEY LOOKUP  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
pavlo1c
Суть вопроса как раз в том, что она использует кластерный вместо ACCKTID индекса, в этом индексе ровно те поля, которые у меня в условии. Но она его не берет почему то.


у вас, как раз и используется НЕ КЛАСТЕРНЫЙ - ACCKTID, который не покрывает условия запроса...и за недостающими полями скуль бежит в кластерный...как раз ваш (кей лукап)
24 апр 14, 10:16    [15927056]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса KEY LOOKUP  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
автор
Система реально сильно нагружена и это только одна сторона, потом по другой стороне такойже запрос и к итогам потому в общем не так быстро выходит как хотелось бы.
[#БухСчетаТЕСТ] это временная там по сути список счетов по которым строить, если просто передам в условие "in (select)" толку нет все равно.
в индексе который (как мне кажется) подходит ACCKTID есть ровно все поля которые указаны в условии же, вот и не могу понять почему все равно кластерный использует?

Вы это сами перечитайте. Ничего непонятно, учитесь формулировать вопросы.

Как понял я.

У вас есть реальный запрос, в котором, для доступа к данным таблицы [_1SENTRY], вместо поиска по некластерному индексу [ACCKTID], используется сканирование кластерного.

Вы сделали некоторый упрощенный запрос, для изучения этого поведения. В нем форсировали использование некластерного индекса подсказкой, но появился Key Lookup. Этот план вы и привели в первоначальном вопросе.

Вопрос же, заключается в том, как убрать Key Lookup. Поскольку он является причиной того, что в реальном плане выбирается просмотр кластерного вместо поиска по некластерному, что вызывает проблемы. Также вопрос, почему, если в некластерном индексе есть все поля, что есть в условии запроса - поиск не используется.

Так?

Если так, то выбор использовать ли "сканирование или поиск + лукап" делается на основании стоимости, которая вычисляется на основании числа возвращаемых строк, так называемой селективности. Эта много раз это обсуждалось, поищите по словам: селективность, key lookup, покрывающий индекс.

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

Чтобы этого избежать, нужно сделать индекс ACCKTID покрывающим для вашего запроса, т.е. таким, в котором есть все поля, необходимые для нужд запросы. Это не только поля в where, но и в select и, возможно, в других частях.
Соответсвенно какие есть варианты:
  • 1) расширить индекс ACCKTID, добавив недостающие запросу поля
  • 2) сделать индекс кластерным (но т.к. возможен только один кластерный, то от прежнего придется отказаться)
  • 3) уменьшить число необходимых запросу полей.
    Поля, которых недостает в индексе ACCKTID перечислены в предыдущем сообщении под спойлером.

    Если что-то осталось непонятным, рекомендую, все-таки, воспользоваться поиском - это одна из самых базовых и следовательно популярных тем, касательно проектирования индексов и оптимизации запросов.

    Можете вот еще почитать вообще про проектирование индексов от MS (там и про покрывающие есть):
    Общие рекомендации по проектированию индексов
    Основы проектирования индексов
  • 24 апр 14, 10:22    [15927087]     Ответить | Цитировать Сообщить модератору
     Re: Оптимизация запроса KEY LOOKUP  [new]
    pavlo1c
    Member

    Откуда: Россия
    Сообщений: 112
    Knyazev Alexey,

    в ACCKTID есть ровно те поля, которые в запросе.
    также если проблема в виртуальной (хотя странно) могу убрать джойн и добавить условие скажем
    EntryKred.accktid in (' 20 ',' 86 ') толку мало :)

    К сообщению приложен файл. Размер - 29Kb
    24 апр 14, 10:24    [15927104]     Ответить | Цитировать Сообщить модератору
     Re: Оптимизация запроса KEY LOOKUP  [new]
    Knyazev Alexey
    Member

    Откуда: Екб -> Мск
    Сообщений: 10233
    Блог
    pavlo1c
    в ACCKTID есть ровно те поля, которые в запросе


    как же все, если у вас в запросе
    SELECT * 
    

    от куда сиквелу тащить все поля, если индекс, который вы используете - не покрывающий!?
    24 апр 14, 10:27    [15927129]     Ответить | Цитировать Сообщить модератору
     Re: Оптимизация запроса KEY LOOKUP  [new]
    SomewhereSomehow
    Member

    Откуда: Moscow
    Сообщений: 2480
    Блог
    pavlo1c
    в ACCKTID есть ровно те поля, которые в запросе.


    Ваш запрос:
    SELECT * -- Это ВСЕ поля
    FROM _1sentry as EntryKred with (NOLOCK, INDEX(ACCKTID))
    	INNER JOIN [dbo].[#БухСчетаТЕСТ] as БухСчета with (NOLOCK) ON БухСчета.СчетID = EntryKred.accktid
    WHERE
    	EntryKred.date_time_docid >= '20140301'
    	AND EntryKred.date_time_docid < '201403117579C0 K2ZFN   '
    	AND EntryKred.provkind = ' '
    	AND EntryKred.active = ' '
    	AND EntryKred.CURRID <> ''
    


    А в индексе только поля:
    CREATE NONCLUSTERED INDEX [ACCKTID] ON [dbo].[_1SENTRY] 
    (
    	[ACCKTID] ASC,
    	[DATE_TIME_DOCID] ASC,
    	[PROVKIND] ASC,
    	[ACTIVE] ASC,
    	[CURRID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    
    24 апр 14, 10:28    [15927143]     Ответить | Цитировать Сообщить модератору
     Re: Оптимизация запроса KEY LOOKUP  [new]
    pavlo1c
    Member

    Откуда: Россия
    Сообщений: 112
    SomewhereSomehow,

    Сорри, я видимо заблуждался, я всегда считал, что для индекса важен не селект, а условия, если это не так то не понятно почему так.
    Если у меня условия сходятся с индексом, я нашел ссылку в индексе на строку(строки) в таблице, почему я там не могу все поля получить по этой ссылке? Или я вовсе запутался :(
    24 апр 14, 10:36    [15927209]     Ответить | Цитировать Сообщить модератору
     Re: Оптимизация запроса KEY LOOKUP  [new]
    SomewhereSomehow
    Member

    Откуда: Moscow
    Сообщений: 2480
    Блог
    pavlo1c
    я нашел ссылку в индексе на строку(строки) в таблице, почему я там не могу все поля получить по этой ссылке? Или я вовсе запутался :(

    А так и происходит.
    1) "я нашел ссылку в индексе на строку(строки) в таблице" - это ваш поиск по индексу (index Seek)
    2) "все поля получить по этой ссылке" - а это как раз Lookup, т.е. он лезет в таблицу, чтобы получить все поля.

    Такая примерно картинка:
    Картинка с другого сайта.

    Т.е. у вас два случайных поиска. Это дорого, по этому, в вашем запросе оптимизатор выбирает скан. Если в реальном запросе у вас также звездочка - убирайте ее, оставляйте только необходимые поля. Потом проследите, чтобы оставленные поля были включены в некластерный индекс, чтоб сервер не лазил дополнительно еще в саму таблицу.
    24 апр 14, 10:41    [15927244]     Ответить | Цитировать Сообщить модератору
     Re: Оптимизация запроса KEY LOOKUP  [new]
    pavlo1c
    Member

    Откуда: Россия
    Сообщений: 112
    SomewhereSomehow,

    Ну в том и дело, что конечно не звездочка в запросе, но поля не входящие в индекс конечно есть в селекте.
    Чертова 1С, даже если добавить индекс свой, нужно за ним следить, иначе снесет и создается долго, таблица эта только 20Гб.
    Думал может получится улучшить ситуацию в данных реалях.
    А key lookup это все же поиск по ключу видимо исходя из ссылки не кластерного?
    Просто не понятно чем отличается от scan тогда.
    Мне видилось, если она нашла в не кластерном записи, по ним можно четко выбрать не достающий кусок данных по ссылке в таблице данных, а она как то рассчитала и поняла (если я правильно понял) что так будет медленнее чем по кластерному шарится в районе date_time_docid и уже тут просто также по ссылке отбирать данные.
    Хм, не укладывается в голове если честно, но за подсказку спасибо большое.
    24 апр 14, 10:54    [15927340]     Ответить | Цитировать Сообщить модератору
     Re: Оптимизация запроса KEY LOOKUP  [new]
    SomewhereSomehow
    Member

    Откуда: Moscow
    Сообщений: 2480
    Блог
    pavlo1c
    Ну в том и дело, что конечно не звездочка в запросе, но поля не входящие в индекс конечно есть в селекте.
    Чертова 1С, даже если добавить индекс свой, нужно за ним следить, иначе снесет и создается долго, таблица эта только 20Гб.
    Думал может получится улучшить ситуацию в данных реалях.

    Если нет возможности создать подходящую структуру, то данные из ниоткуда сервер не может взять. Тут уж либо покрывающий индекс, либо Lookup. А если вы форсируете индекс (пусть даже с Lookup), не быстрее чем сканирование получается?

    pavlo1c
    А key lookup это все же поиск по ключу видимо исходя из ссылки не кластерного?
    Просто не понятно чем отличается от scan тогда.

    Сканирование, т.е. просмотр - это последовательный просмотр всех листовых страниц. Трудно будет объяснить, если вы не представляете структуру индекса. Это сбалансированное дерево. Сканирование просматривает все страницы листового уровня, а поиск, идет от корневого узла вниз.

    Классическое сравнение - оглавление книги. Допустим, вы ищете в книге по SQL информацию по индексам, есть две стратегии:
    1) Открываете оглавление, идете к букве И, находите там "Индексы". Это будет Nonclustered Index Seek или просто Index Seek. Далее, чтобы прочитать саму информацию, смотрите, какая в оглавлении для раздела "Индексы" указана страница, допустим с. 55. Ищете в книге страницу 55 - это Clustered Index Seek.
    2) Открываете книгу и начинаете листать все подряд, пока не найдете раздел "Индексы". Это будет Clustered Index Scan.

    Почитайте про структуру индексов, должно стать понятнее Индексы. Теоретические основы..
    24 апр 14, 11:17    [15927533]     Ответить | Цитировать Сообщить модератору
     Re: Оптимизация запроса KEY LOOKUP  [new]
    pavlo1c
    Member

    Откуда: Россия
    Сообщений: 112
    SomewhereSomehow,

    ааа ну да, спасибо. Я просто запутался.
    24 апр 14, 11:25    [15927589]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить