Domanda

Fondamentalmente, ecco il design della tabella (la parte necessaria):

id | dt
--------
1  | 2014-05-13
2  | 1900-01-01
3  | 1900-01-01
4  | 2014-05-12
5  | 1900-01-01

Quindi quello che sto cercando di fare è impostare il 1900-01-01 Date ai dati dalla colonna sopra che non è popolata con 1900-01-01. Quindi i dati finali sarebbero così:

id | dt
--------
1  | 2014-05-13
2  | 2014-05-13
3  | 2014-05-13
4  | 2014-05-12
5  | 2014-05-12

Ci sono circa 500.000 record in fase di tempo ed è circa 50/50 che si tratti di una data reale o 1900-01-01. Alcuni di loro potrebbero avere 1 data che va in 100 1900-01-01 file.

In questo momento, questo è ciò con cui sto lavorando:

UPDATE ISWFN
SET dt = ISWFN2.dt
FROM imp.TBL_DATA ISWFN
JOIN (
        SELECT ISWFN.id, MAX(ISWFN2.id) [id2]
        FROM imp.TBL_DATA ISWFN
            JOIN imp.TBL_DATA ISWFN2 ON
                ISWFN.id > ISWFN2.id
        WHERE ISWFN.dt = '1900-01-01'
            AND ISWFN2.dt != '1900-01-01'
        GROUP BY ISWFN.id ) SQ ON
    ISWFN.id = SQ.id
JOIN imp.TBL_DATA ISWFN2 ON
    SQ.id2 = ISWFN2.id

Il problema qui è che finisco con un addetto a loop nidificato con 250.000 record su ciascun lato del join, fa una stima di riga di circa 62.500.000.000 ...

In questo momento, l'ho fatto id come la chiave primaria. C'è anche un indice filtrato su dt dove è 1900-01-01 e un indice filtrato opposto in cui non lo è 1900-01-01.

qualche idea?

EDIT: è davvero la sotto-query (SQ) che è l'area del problema. Questa è la parte che sto cercando di sintonizzare.

Scusa, non so come caricare un file ... ecco l'XML per il piano di query (per la sottoquery):

<?xml version="1.0" encoding="UTF-8"?>
<ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.1" Build="10.50.4000.0">
  <BatchSequence>
    <Batch>
      <Statements>
        <StmtSimple StatementCompId="1" StatementEstRows="253776" StatementId="1" StatementOptmLevel="FULL" StatementSubTreeCost="177777" StatementText="Statement1" StatementType="SELECT" QueryHash="0x6854D7EBB9341CB2" QueryPlanHash="0xB8F343C168320FED">
          <StatementSetOptions ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" NUMERIC_ROUNDABORT="false" QUOTED_IDENTIFIER="true" />
          <QueryPlan CachedPlanSize="32" CompileTime="34" CompileCPU="18" CompileMemory="408">
            <RelOp AvgRowSize="15" EstimateCPU="0.362533" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="253776" LogicalOp="Gather Streams" NodeId="0" Parallel="true" PhysicalOp="Parallelism" EstimatedTotalSubtreeCost="177777">
              <OutputList>
                <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                <ColumnReference Column="Expr1004" />
              </OutputList>
              <Parallelism>
                <RelOp AvgRowSize="15" EstimateCPU="0.21571" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="253776" LogicalOp="Aggregate" NodeId="1" Parallel="true" PhysicalOp="Stream Aggregate" EstimatedTotalSubtreeCost="177776">
                  <OutputList>
                    <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                    <ColumnReference Column="Expr1004" />
                  </OutputList>
                  <StreamAggregate>
                    <DefinedValues>
                      <DefinedValue>
                        <ColumnReference Column="Expr1004" />
                        <ScalarOperator ScalarString="ScalarString1">
                          <Aggregate AggType="MAX" Distinct="false">
                            <ScalarOperator>
                              <Identifier>
                                <ColumnReference Column="partialagg1005" />
                              </Identifier>
                            </ScalarOperator>
                          </Aggregate>
                        </ScalarOperator>
                      </DefinedValue>
                    </DefinedValues>
                    <GroupBy>
                      <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                    </GroupBy>
                    <RelOp AvgRowSize="15" EstimateCPU="3.36699" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="507553" LogicalOp="Repartition Streams" NodeId="2" Parallel="true" PhysicalOp="Parallelism" EstimatedTotalSubtreeCost="177776">
                      <OutputList>
                        <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                        <ColumnReference Column="partialagg1005" />
                      </OutputList>
                      <Parallelism PartitioningType="Hash">
                        <PartitionColumns>
                          <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                        </PartitionColumns>
                        <OrderBy>
                          <OrderByColumn Ascending="true">
                            <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                          </OrderByColumn>
                        </OrderBy>
                        <RelOp AvgRowSize="15" EstimateCPU="9802.32" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="507553" LogicalOp="Aggregate" NodeId="3" Parallel="true" PhysicalOp="Stream Aggregate" EstimatedTotalSubtreeCost="177773">
                          <OutputList>
                            <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                            <ColumnReference Column="partialagg1005" />
                          </OutputList>
                          <StreamAggregate>
                            <DefinedValues>
                              <DefinedValue>
                                <ColumnReference Column="partialagg1005" />
                                <ScalarOperator ScalarString="ScalarString2">
                                  <Aggregate AggType="MAX" Distinct="false">
                                    <ScalarOperator>
                                      <Identifier>
                                        <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias2" Column="Column1" />
                                      </Identifier>
                                    </ScalarOperator>
                                  </Aggregate>
                                </ScalarOperator>
                              </DefinedValue>
                            </DefinedValues>
                            <GroupBy>
                              <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                            </GroupBy>
                            <RelOp AvgRowSize="15" EstimateCPU="136577" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="32674000000" LogicalOp="Inner Join" NodeId="4" Parallel="true" PhysicalOp="Nested Loops" EstimatedTotalSubtreeCost="167970">
                              <OutputList>
                                <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                                <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias2" Column="Column1" />
                              </OutputList>
                              <NestedLoops Optimized="false">
                                <Predicate>
                                  <ScalarOperator ScalarString="ScalarString3">
                                    <Compare CompareOp="GT">
                                      <ScalarOperator>
                                        <Identifier>
                                          <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                                        </Identifier>
                                      </ScalarOperator>
                                      <ScalarOperator>
                                        <Identifier>
                                          <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias2" Column="Column1" />
                                        </Identifier>
                                      </ScalarOperator>
                                    </Compare>
                                  </ScalarOperator>
                                </Predicate>
                                <RelOp AvgRowSize="11" EstimateCPU="0.139637" EstimateIO="0.178475" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="253742" LogicalOp="Index Seek" NodeId="5" Parallel="true" PhysicalOp="Index Seek" EstimatedTotalSubtreeCost="0.318111" TableCardinality="511279">
                                  <OutputList>
                                    <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                                  </OutputList>
                                  <IndexScan Ordered="true" ScanDirection="FORWARD" ForcedIndex="false" ForceSeek="false" ForceScan="false" NoExpandHint="false">
                                    <DefinedValues>
                                      <DefinedValue>
                                        <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column1" />
                                      </DefinedValue>
                                    </DefinedValues>
                                    <Object Database="Database1" Schema="Schema1" Table="Table1" Index="Index1" Filtered="true" Alias="Alias1" IndexKind="NonClustered" />
                                    <SeekPredicates>
                                      <SeekPredicateNew>
                                        <SeekKeys>
                                          <Prefix ScanType="EQ">
                                            <RangeColumns>
                                              <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias1" Column="Column2" />
                                            </RangeColumns>
                                            <RangeExpressions>
                                              <ScalarOperator ScalarString="ScalarString4">
                                                <Const ConstValue="Value1" />
                                              </ScalarOperator>
                                            </RangeExpressions>
                                          </Prefix>
                                        </SeekKeys>
                                      </SeekPredicateNew>
                                    </SeekPredicates>
                                  </IndexScan>
                                </RelOp>
                                <RelOp AvgRowSize="11" EstimateCPU="0.0464568" EstimateIO="0.01" EstimateRebinds="0" EstimateRewinds="253741" EstimateRows="257537" LogicalOp="Lazy Spool" NodeId="6" Parallel="true" PhysicalOp="Table Spool" EstimatedTotalSubtreeCost="11788.5">
                                  <OutputList>
                                    <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias2" Column="Column1" />
                                  </OutputList>
                                  <Spool>
                                    <RelOp AvgRowSize="11" EstimateCPU="0.283448" EstimateIO="0.183866" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="257537" LogicalOp="Index Scan" NodeId="7" Parallel="true" PhysicalOp="Index Scan" EstimatedTotalSubtreeCost="0.467313" TableCardinality="511279">
                                      <OutputList>
                                        <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias2" Column="Column1" />
                                      </OutputList>
                                      <IndexScan Ordered="false" ForcedIndex="false" ForceSeek="false" ForceScan="false" NoExpandHint="false">
                                        <DefinedValues>
                                          <DefinedValue>
                                            <ColumnReference Database="Database1" Schema="Schema1" Table="Table1" Alias="Alias2" Column="Column1" />
                                          </DefinedValue>
                                        </DefinedValues>
                                        <Object Database="Database1" Schema="Schema1" Table="Table1" Index="Index2" Filtered="true" Alias="Alias2" IndexKind="NonClustered" />
                                      </IndexScan>
                                    </RelOp>
                                  </Spool>
                                </RelOp>
                              </NestedLoops>
                            </RelOp>
                          </StreamAggregate>
                        </RelOp>
                      </Parallelism>
                    </RelOp>
                  </StreamAggregate>
                </RelOp>
              </Parallelism>
            </RelOp>
          </QueryPlan>
        </StmtSimple>
      </Statements>
    </Batch>
  </BatchSequence>
</ShowPlanXML>

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top