Solved

Optimizing SQL Query

Posted on 2016-08-31
16
42 Views
Last Modified: 2016-09-02
I have the following SQL query which I need to optimize. Currently the execution time for this query is around 2 mins.
select top 1 o.ordernumber
from orders o with (Nolock)
inner join customer cu on cu.customerid=o.customerid
inner join orders_shoppingcart os1 on o.ordernumber=os1.ordernumber
inner join product p1 on p1.productid=os1.productid
where cu.sfdc_id='0037000001rcvxQAAQ'
and (p1.producttypeid = 1 or p1.producttypeid=7)
and (p1.name != 'General Fund'or p1.name != 'Corpus Fund')
--and o.transaction_source not like '%dedo'
and o.Order_Status!='cancelled'
order by o.createdon desc

Any help in this regard would be greatly appreciated,
Thanks,
Aditya
0
Comment
Question by:giveindia
  • 8
  • 4
  • 3
  • +1
16 Comments
 
LVL 45

Expert Comment

by:Vitor Montalvão
ID: 41778064
Can you post the respective Query Execution Plan, so we can check if some index is missing?
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 41778075
because you are using INNER joins, have you tried to move conditions into the join:

select top 1 o.ordernumber 

from orders o with (Nolock)

inner join customer cu 
on cu.customerid=o.customerid
and cu.sfdc_id='0037000001rcvxQAAQ'

inner join orders_shoppingcart os1 
on o.ordernumber=os1.ordernumber 

inner join product p1 
on p1.productid=os1.productid 
and (p1.producttypeid = 1 or p1.producttypeid=7)
and (p1.name != 'General Fund'or p1.name != 'Corpus Fund') 

where o.Order_Status!='cancelled'
--and o.transaction_source not like '%dedo' 

order by o.createdon desc

Open in new window

0
 
LVL 45

Expert Comment

by:Vitor Montalvão
ID: 41778078
because you are using INNER joins, have you tried to move conditions into the join:
I'm not sure how that can help improve the performance. Can you share your thoughts about this one?
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 41778094
I have seen scenarios where because the conditions were moved in the join itself, less rows were returned and processed. The execution plan was different.
0
 
LVL 45

Expert Comment

by:Vitor Montalvão
ID: 41778106
In which version?
SQL Server engine is intelligent enough to change internally the SQL statements to improve the performance.
Anyway, won't hurt to give it a try even I'm skeptic about this one would like to hear about the results.
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 41778112
If not mistaken it was SQL 2008 R2
0
 
LVL 45

Expert Comment

by:Vitor Montalvão
ID: 41778116
I would believe better if it was MSSQL 2000 or previous versions :)
0
 
LVL 69

Expert Comment

by:ScottPletcher
ID: 41778147
You need these indexes present on those tables.  The index can have additional keys as the first key
column is as shown below.  The index can of course also include additional columns as long as it has at least the columns shown.

orders: first key: Order_Status  INCLUDE(s): customerid, ordernumber
customer: first key: sfdc_id  INCLUDE(s): customerid
orders_shoppingcart: first Key: ordernumber  INCLUDE(s): [none]
product: first key: producttypeid  INCLUDE(s): name, productid
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:giveindia
ID: 41781334
by moving conditions in join as suggested by eric, was able to reduce query time from 2 min to around 1 min 56 sec.

Tried combining this with index creation as suggested by scott to check if i could shave off a bit more time. But by creating these indexes the query execution time increased to 2min 2 sec.

Pls can i get some suggestions on this
0
 
LVL 45

Expert Comment

by:Vitor Montalvão
ID: 41781354
by moving conditions in join as suggested by eric, was able to reduce query time from 2 min to around 1 min 56 sec.
Those 4 seconds difference might have to do with the buffer.

Pls can i get some suggestions on this
As my first comment request, can you post the respective Query Execution Plan?
0
 

Author Comment

by:giveindia
ID: 41781369
In case it helps, below is the script for creation of the indexes as suggested by scott:

CREATE NONCLUSTERED INDEX [IX_mdoallocation1] ON [dbo].[orders]
(
      [order_status] ASC
)
INCLUDE (       [Customerid],
      --[FirstName],
      [ordernumber]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_mdoallocation2] ON [dbo].[customer]
(
      [sfdc_id] ASC
)
INCLUDE (       --[Customerid],
      --[FirstName],
      [customerid]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_mdoallocation3] ON [dbo].[orders_shoppingcart]
(
      [ordernumber] ASC
)
--INCLUDE (       --[Customerid],
      --[FirstName],
      --[customerid])
       WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_mdoallocation4] ON [dbo].[product]
(
      [producttypeid] ASC
)
INCLUDE (       --[Customerid],
      [name],
      [productid])
       WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
0
 
LVL 45

Expert Comment

by:Vitor Montalvão
ID: 41781373
No, doesn't help.
You can have a thousand indexes created but only the Query Execution Plan gives you the information which indexes are really being used.
0
 

Author Comment

by:giveindia
ID: 41781385
<ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.2" Build="11.0.6020.0">
  <BatchSequence>
    <Batch>
      <Statements>
        <StmtSimple StatementText="select top 1 o.ordernumber &#xD;&#xA;&#xD;&#xA;from orders o with (Nolock)&#xD;&#xA;&#xD;&#xA;inner join customer cu &#xD;&#xA;on cu.customerid=o.customerid&#xD;&#xA;and cu.sfdc_id='0037000001rcvxQAAQ'&#xD;&#xA;&#xD;&#xA;inner join orders_shoppingcart os1 &#xD;&#xA;on o.ordernumber=os1.ordernumber &#xD;&#xA;&#xD;&#xA;inner join product p1 &#xD;&#xA;on p1.productid=os1.productid &#xD;&#xA;and (p1.producttypeid = 1 or p1.producttypeid=7)&#xD;&#xA;and (p1.name != 'General Fund'or p1.name != 'Corpus Fund') &#xD;&#xA;&#xD;&#xA;where o.Order_Status!='cancelled'&#xD;&#xA;and o.transaction_source not like '%dedo' &#xD;&#xA;&#xD;&#xA;order by o.createdon desc" StatementId="1" StatementCompId="2" StatementType="SELECT" RetrievedFromCache="true" StatementSubTreeCost="557.128" StatementEstRows="1" StatementOptmLevel="FULL" QueryHash="0x2866B41E2CE40202" QueryPlanHash="0x585D7845C42ADE9">
          <StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false" />
          <QueryPlan DegreeOfParallelism="8" MemoryGrant="13696" CachedPlanSize="88" CompileTime="128" CompileCPU="128" CompileMemory="2024">
            <ThreadStat Branches="2" UsedThreads="9">
              <ThreadReservation NodeId="0" ReservedThreads="16" />
            </ThreadStat>
            <MissingIndexes>
              <MissingIndexGroup Impact="96.2979">
                <MissingIndex Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]">
                  <ColumnGroup Usage="INEQUALITY">
                    <Column Name="[Order_Status]" ColumnId="150" />
                  </ColumnGroup>
                  <ColumnGroup Usage="INCLUDE">
                    <Column Name="[OrderNumber]" ColumnId="1" />
                    <Column Name="[CustomerID]" ColumnId="8" />
                    <Column Name="[Transaction_Source]" ColumnId="143" />
                    <Column Name="[CreatedOn]" ColumnId="151" />
                  </ColumnGroup>
                </MissingIndex>
              </MissingIndexGroup>
              <MissingIndexGroup Impact="99.9898">
                <MissingIndex Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]">
                  <ColumnGroup Usage="EQUALITY">
                    <Column Name="[CustomerID]" ColumnId="8" />
                  </ColumnGroup>
                  <ColumnGroup Usage="INCLUDE">
                    <Column Name="[OrderNumber]" ColumnId="1" />
                    <Column Name="[Transaction_Source]" ColumnId="143" />
                    <Column Name="[Order_Status]" ColumnId="150" />
                    <Column Name="[CreatedOn]" ColumnId="151" />
                  </ColumnGroup>
                </MissingIndex>
              </MissingIndexGroup>
            </MissingIndexes>
            <MemoryGrantInfo SerialRequiredMemory="1536" SerialDesiredMemory="1968" RequiredMemory="13248" DesiredMemory="13696" RequestedMemory="13696" GrantWaitTime="0" GrantedMemory="13696" MaxUsedMemory="1864" />
            <OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="78643" EstimatedPagesCached="39321" EstimatedAvailableDegreeOfParallelism="4" />
            <RelOp NodeId="0" PhysicalOp="Top" LogicalOp="Top" EstimateRows="1" EstimateIO="0" EstimateCPU="1e-007" AvgRowSize="11" EstimatedTotalSubtreeCost="557.128" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
              <OutputList>
                <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
              </OutputList>
              <RunTimeInformation>
                <RunTimeCountersPerThread Thread="0" ActualRows="1" ActualEndOfScans="1" ActualExecutions="1" />
              </RunTimeInformation>
              <Top RowCount="0" IsPercent="0" WithTies="0">
                <TopExpression>
                  <ScalarOperator ScalarString="(1)">
                    <Const ConstValue="(1)" />
                  </ScalarOperator>
                </TopExpression>
                <RelOp NodeId="1" PhysicalOp="Parallelism" LogicalOp="Gather Streams" EstimateRows="1" EstimateIO="0" EstimateCPU="0.0285229" AvgRowSize="19" EstimatedTotalSubtreeCost="557.128" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
                  <OutputList>
                    <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
                    <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CreatedOn" />
                  </OutputList>
                  <RunTimeInformation>
                    <RunTimeCountersPerThread Thread="0" ActualRows="1" ActualEndOfScans="0" ActualExecutions="1" />
                  </RunTimeInformation>
                  <Parallelism>
                    <OrderBy>
                      <OrderByColumn Ascending="0">
                        <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CreatedOn" />
                      </OrderByColumn>
                    </OrderBy>
                    <RelOp NodeId="2" PhysicalOp="Nested Loops" LogicalOp="Inner Join" EstimateRows="1" EstimateIO="0" EstimateCPU="6.77962e-005" AvgRowSize="19" EstimatedTotalSubtreeCost="557.099" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
                      <OutputList>
                        <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
                        <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CreatedOn" />
                      </OutputList>
                      <RunTimeInformation>
                        <RunTimeCountersPerThread Thread="8" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                        <RunTimeCountersPerThread Thread="2" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                        <RunTimeCountersPerThread Thread="5" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                        <RunTimeCountersPerThread Thread="4" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                        <RunTimeCountersPerThread Thread="7" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                        <RunTimeCountersPerThread Thread="3" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                        <RunTimeCountersPerThread Thread="1" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                        <RunTimeCountersPerThread Thread="6" ActualRows="3" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                        <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                      </RunTimeInformation>
                      <NestedLoops Optimized="0" WithOrderedPrefetch="1">
                        <OuterReferences>
                          <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="ProductID" />
                          <ColumnReference Column="Expr1011" />
                        </OuterReferences>
                        <RelOp NodeId="4" PhysicalOp="Nested Loops" LogicalOp="Inner Join" EstimateRows="1" EstimateIO="0" EstimateCPU="6.77962e-005" AvgRowSize="23" EstimatedTotalSubtreeCost="557.093" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
                          <OutputList>
                            <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
                            <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CreatedOn" />
                            <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="ProductID" />
                          </OutputList>
                          <RunTimeInformation>
                            <RunTimeCountersPerThread Thread="8" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="2" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="5" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="4" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="7" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="3" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="1" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="6" ActualRows="3" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                          </RunTimeInformation>
                          <NestedLoops Optimized="0" WithOrderedPrefetch="1">
                            <OuterReferences>
                              <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="Order_Detail_ID" />
                              <ColumnReference Column="Expr1010" />
                            </OuterReferences>
                            <RelOp NodeId="6" PhysicalOp="Nested Loops" LogicalOp="Inner Join" EstimateRows="1" EstimateIO="0" EstimateCPU="6.77962e-005" AvgRowSize="23" EstimatedTotalSubtreeCost="557.086" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
                              <OutputList>
                                <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
                                <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CreatedOn" />
                                <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="Order_Detail_ID" />
                              </OutputList>
                              <RunTimeInformation>
                                <RunTimeCountersPerThread Thread="8" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="2" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="5" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="3" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="4" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="7" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="6" ActualRows="3" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="1" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                              </RunTimeInformation>
                              <NestedLoops Optimized="0" WithOrderedPrefetch="1">
                                <OuterReferences>
                                  <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
                                  <ColumnReference Column="Expr1009" />
                                </OuterReferences>
                                <RelOp NodeId="8" PhysicalOp="Sort" LogicalOp="Sort" EstimateRows="1" EstimateIO="0.00281532" EstimateCPU="0.000128726" AvgRowSize="19" EstimatedTotalSubtreeCost="557.081" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
                                  <OutputList>
                                    <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
                                    <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CreatedOn" />
                                  </OutputList>
                                  <MemoryFractions Input="0.0740741" Output="1" />
                                  <RunTimeInformation>
                                    <RunTimeCountersPerThread Thread="8" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualRebinds="1" ActualRewinds="0" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="2" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRebinds="1" ActualRewinds="0" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="5" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRebinds="1" ActualRewinds="0" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="3" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRebinds="1" ActualRewinds="0" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="4" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRebinds="1" ActualRewinds="0" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="7" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualRebinds="1" ActualRewinds="0" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="1" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualRebinds="1" ActualRewinds="0" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="6" ActualRows="3" Batches="0" ActualExecutionMode="Row" ActualRebinds="1" ActualRewinds="0" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualRebinds="0" ActualRewinds="0" ActualEndOfScans="0" ActualExecutions="0" />
                                  </RunTimeInformation>
                                  <Sort Distinct="0">
                                    <OrderBy>
                                      <OrderByColumn Ascending="0">
                                        <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CreatedOn" />
                                      </OrderByColumn>
                                    </OrderBy>
                                    <RelOp NodeId="9" PhysicalOp="Hash Match" LogicalOp="Inner Join" EstimateRows="47.6973" EstimateIO="0" EstimateCPU="9.25128" AvgRowSize="19" EstimatedTotalSubtreeCost="557.078" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
                                      <OutputList>
                                        <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
                                        <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CreatedOn" />
                                      </OutputList>
                                      <MemoryFractions Input="1" Output="0.925926" />
                                      <RunTimeInformation>
                                        <RunTimeCountersPerThread Thread="8" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                        <RunTimeCountersPerThread Thread="2" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                        <RunTimeCountersPerThread Thread="5" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                        <RunTimeCountersPerThread Thread="3" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                        <RunTimeCountersPerThread Thread="7" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                        <RunTimeCountersPerThread Thread="4" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                        <RunTimeCountersPerThread Thread="1" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                        <RunTimeCountersPerThread Thread="6" ActualRows="3" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                        <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                                      </RunTimeInformation>
                                      <Hash>
                                        <DefinedValues />
                                        <HashKeysBuild>
                                          <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Customer]" Alias="[cu]" Column="CustomerID" />
                                        </HashKeysBuild>
                                        <HashKeysProbe>
                                          <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CustomerID" />
                                        </HashKeysProbe>
                                        <ProbeResidual>
                                          <ScalarOperator ScalarString="[GI_RAW].[dbo].[Customer].[CustomerID] as [cu].[CustomerID]=[GI_RAW].[dbo].[Orders].[CustomerID] as [o].[CustomerID]">
                                            <Compare CompareOp="EQ">
                                              <ScalarOperator>
                                                <Identifier>
                                                  <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Customer]" Alias="[cu]" Column="CustomerID" />
                                                </Identifier>
                                              </ScalarOperator>
                                              <ScalarOperator>
                                                <Identifier>
                                                  <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CustomerID" />
                                                </Identifier>
                                              </ScalarOperator>
                                            </Compare>
                                          </ScalarOperator>
                                        </ProbeResidual>
                                        <RelOp NodeId="10" PhysicalOp="Bitmap" LogicalOp="Bitmap Create" EstimateRows="1" EstimateIO="0" EstimateCPU="0.0285019" AvgRowSize="11" EstimatedTotalSubtreeCost="0.031785" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
                                          <OutputList>
                                            <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Customer]" Alias="[cu]" Column="CustomerID" />
                                          </OutputList>
                                          <RunTimeInformation>
                                            <RunTimeCountersPerThread Thread="8" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="2" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="7" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="5" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="4" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="3" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="6" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="1" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                                          </RunTimeInformation>
                                          <Bitmap>
                                            <DefinedValues>
                                              <DefinedValue>
                                                <ColumnReference Column="Bitmap1008" />
                                              </DefinedValue>
                                            </DefinedValues>
                                            <HashKeys>
                                              <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Customer]" Alias="[cu]" Column="CustomerID" />
                                            </HashKeys>
                                            <RelOp NodeId="11" PhysicalOp="Parallelism" LogicalOp="Distribute Streams" EstimateRows="1" EstimateIO="0" EstimateCPU="0.0285019" AvgRowSize="11" EstimatedTotalSubtreeCost="0.031785" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
                                              <OutputList>
                                                <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Customer]" Alias="[cu]" Column="CustomerID" />
                                              </OutputList>
                                              <RunTimeInformation>
                                                <RunTimeCountersPerThread Thread="8" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                                <RunTimeCountersPerThread Thread="2" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                                <RunTimeCountersPerThread Thread="7" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                                <RunTimeCountersPerThread Thread="5" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                                <RunTimeCountersPerThread Thread="4" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                                <RunTimeCountersPerThread Thread="6" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                                <RunTimeCountersPerThread Thread="3" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                                <RunTimeCountersPerThread Thread="1" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="1" ActualExecutions="1" />
                                                <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                                              </RunTimeInformation>
                                              <Parallelism PartitioningType="Broadcast">
                                                <RelOp NodeId="12" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateIO="0.003125" EstimateCPU="0.0001581" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="427909" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
                                                  <OutputList>
                                                    <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Customer]" Alias="[cu]" Column="CustomerID" />
                                                  </OutputList>
                                                  <RunTimeInformation>
                                                    <RunTimeCountersPerThread Thread="1" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="1" ActualExecutions="1" />
                                                    <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                                                  </RunTimeInformation>
                                                  <IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore">
                                                    <DefinedValues>
                                                      <DefinedValue>
                                                        <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Customer]" Alias="[cu]" Column="CustomerID" />
                                                      </DefinedValue>
                                                    </DefinedValues>
                                                    <Object Database="[GI_RAW]" Schema="[dbo]" Table="[Customer]" Index="[IX_Auto_8767]" Alias="[cu]" IndexKind="NonClustered" />
                                                    <SeekPredicates>
                                                      <SeekPredicateNew>
                                                        <SeekKeys>
                                                          <Prefix ScanType="EQ">
                                                            <RangeColumns>
                                                              <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Customer]" Alias="[cu]" Column="SFDC_ID" />
                                                            </RangeColumns>
                                                            <RangeExpressions>
                                                              <ScalarOperator ScalarString="N'0037000001rcvxQAAQ'">
                                                                <Const ConstValue="N'0037000001rcvxQAAQ'" />
                                                              </ScalarOperator>
                                                            </RangeExpressions>
                                                          </Prefix>
                                                        </SeekKeys>
                                                      </SeekPredicateNew>
                                                    </SeekPredicates>
                                                  </IndexScan>
                                                </RelOp>
                                              </Parallelism>
                                            </RelOp>
                                          </Bitmap>
                                        </RelOp>
                                        <RelOp NodeId="13" PhysicalOp="Clustered Index Scan" LogicalOp="Clustered Index Scan" EstimateRows="4.62935e+006" EstimateIO="544.673" EstimateCPU="1.38448" AvgRowSize="62" EstimatedTotalSubtreeCost="546.058" TableCardinality="5.03434e+006" Parallel="1" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row">
                                          <OutputList>
                                            <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
                                            <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CustomerID" />
                                            <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CreatedOn" />
                                          </OutputList>
                                          <RunTimeInformation>
                                            <RunTimeCountersPerThread Thread="8" ActualRows="3" Batches="0" ActualExecutionMode="Row" ActualRowsRead="630880" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="2" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualRowsRead="645552" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="7" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="612525" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="3" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualRowsRead="568283" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="5" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualRowsRead="668809" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="4" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualRowsRead="651982" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="6" ActualRows="4" Batches="0" ActualExecutionMode="Row" ActualRowsRead="647824" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="1" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="608486" ActualEndOfScans="1" ActualExecutions="1" />
                                            <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                                          </RunTimeInformation>
                                          <IndexScan Ordered="0" ForcedIndex="0" ForceScan="0" NoExpandHint="0">
                                            <DefinedValues>
                                              <DefinedValue>
                                                <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CustomerID" />
                                              </DefinedValue>
                                              <DefinedValue>
                                                <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CreatedOn" />
                                              </DefinedValue>
                                            </DefinedValues>
                                            <Object Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Index="[PK_Orders]" Alias="[o]" IndexKind="Clustered" />
                                            <Predicate>
                                              <ScalarOperator ScalarString="[GI_RAW].[dbo].[Orders].[Order_Status] as [o].[Order_Status]&lt;&gt;N'cancelled' AND NOT [GI_RAW].[dbo].[Orders].[Transaction_Source] as [o].[Transaction_Source] like N'%dedo' AND PROBE([Bitmap1008],[GI_RAW].[dbo].[Orders].[CustomerID] as [o].[CustomerID],N'[IN ROW]')">
                                                <Logical Operation="AND">
                                                  <ScalarOperator>
                                                    <Logical Operation="AND">
                                                      <ScalarOperator>
                                                        <Compare CompareOp="NE">
                                                          <ScalarOperator>
                                                            <Identifier>
                                                              <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="Order_Status" />
                                                            </Identifier>
                                                          </ScalarOperator>
                                                          <ScalarOperator>
                                                            <Const ConstValue="N'cancelled'" />
                                                          </ScalarOperator>
                                                        </Compare>
                                                      </ScalarOperator>
                                                      <ScalarOperator>
                                                        <Logical Operation="NOT">
                                                          <ScalarOperator>
                                                            <Intrinsic FunctionName="like">
                                                              <ScalarOperator>
                                                                <Identifier>
                                                                  <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="Transaction_Source" />
                                                                </Identifier>
                                                              </ScalarOperator>
                                                              <ScalarOperator>
                                                                <Const ConstValue="N'%dedo'" />
                                                              </ScalarOperator>
                                                            </Intrinsic>
                                                          </ScalarOperator>
                                                        </Logical>
                                                      </ScalarOperator>
                                                    </Logical>
                                                  </ScalarOperator>
                                                  <ScalarOperator>
                                                    <Intrinsic FunctionName="PROBE">
                                                      <ScalarOperator>
                                                        <Identifier>
                                                          <ColumnReference Column="Bitmap1008" />
                                                        </Identifier>
                                                      </ScalarOperator>
                                                      <ScalarOperator>
                                                        <Identifier>
                                                          <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="CustomerID" />
                                                        </Identifier>
                                                      </ScalarOperator>
                                                      <ScalarOperator>
                                                        <Const ConstValue="N'[IN ROW]'" />
                                                      </ScalarOperator>
                                                    </Intrinsic>
                                                  </ScalarOperator>
                                                </Logical>
                                              </ScalarOperator>
                                            </Predicate>
                                          </IndexScan>
                                        </RelOp>
                                      </Hash>
                                    </RelOp>
                                  </Sort>
                                </RelOp>
                                <RelOp NodeId="15" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateIO="0.003125" EstimateCPU="0.000158496" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00569027" TableCardinality="5.533e+006" Parallel="1" EstimateRebinds="1" EstimateRewinds="0" EstimatedExecutionMode="Row">
                                  <OutputList>
                                    <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="Order_Detail_ID" />
                                  </OutputList>
                                  <RunTimeInformation>
                                    <RunTimeCountersPerThread Thread="8" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualRowsRead="2" ActualEndOfScans="2" ActualExecutions="2" />
                                    <RunTimeCountersPerThread Thread="2" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="5" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="3" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="4" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="1" ActualExecutions="1" />
                                    <RunTimeCountersPerThread Thread="7" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="0" ActualExecutions="0" />
                                    <RunTimeCountersPerThread Thread="6" ActualRows="3" Batches="0" ActualExecutionMode="Row" ActualRowsRead="3" ActualEndOfScans="3" ActualExecutions="3" />
                                    <RunTimeCountersPerThread Thread="1" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="0" ActualExecutions="0" />
                                    <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                                  </RunTimeInformation>
                                  <IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore">
                                    <DefinedValues>
                                      <DefinedValue>
                                        <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="Order_Detail_ID" />
                                      </DefinedValue>
                                    </DefinedValues>
                                    <Object Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Index="[Idx_Order_Number]" Alias="[os1]" IndexKind="NonClustered" />
                                    <SeekPredicates>
                                      <SeekPredicateNew>
                                        <SeekKeys>
                                          <Prefix ScanType="EQ">
                                            <RangeColumns>
                                              <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="OrderNumber" />
                                            </RangeColumns>
                                            <RangeExpressions>
                                              <ScalarOperator ScalarString="[GI_RAW].[dbo].[Orders].[OrderNumber] as [o].[OrderNumber]">
                                                <Identifier>
                                                  <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders]" Alias="[o]" Column="OrderNumber" />
                                                </Identifier>
                                              </ScalarOperator>
                                            </RangeExpressions>
                                          </Prefix>
                                        </SeekKeys>
                                      </SeekPredicateNew>
                                    </SeekPredicates>
                                  </IndexScan>
                                </RelOp>
                              </NestedLoops>
                            </RelOp>
                            <RelOp NodeId="17" PhysicalOp="Clustered Index Seek" LogicalOp="Clustered Index Seek" EstimateRows="1" EstimateIO="0.003125" EstimateCPU="0.0001581" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00651803" TableCardinality="5.533e+006" Parallel="1" EstimateRebinds="1" EstimateRewinds="0" EstimatedExecutionMode="Row">
                              <OutputList>
                                <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="ProductID" />
                              </OutputList>
                              <RunTimeInformation>
                                <RunTimeCountersPerThread Thread="8" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualRowsRead="2" ActualEndOfScans="0" ActualExecutions="2" />
                                <RunTimeCountersPerThread Thread="2" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="0" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="5" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="0" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="4" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="0" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="7" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="0" ActualExecutions="0" />
                                <RunTimeCountersPerThread Thread="3" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="0" ActualExecutions="1" />
                                <RunTimeCountersPerThread Thread="1" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="0" ActualExecutions="0" />
                                <RunTimeCountersPerThread Thread="6" ActualRows="3" Batches="0" ActualExecutionMode="Row" ActualRowsRead="3" ActualEndOfScans="0" ActualExecutions="3" />
                                <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                              </RunTimeInformation>
                              <IndexScan Lookup="1" Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore">
                                <DefinedValues>
                                  <DefinedValue>
                                    <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="ProductID" />
                                  </DefinedValue>
                                </DefinedValues>
                                <Object Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Index="[PK_Orders_ShoppingCart]" Alias="[os1]" TableReferenceId="-1" IndexKind="Clustered" />
                                <SeekPredicates>
                                  <SeekPredicateNew>
                                    <SeekKeys>
                                      <Prefix ScanType="EQ">
                                        <RangeColumns>
                                          <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="Order_Detail_ID" />
                                        </RangeColumns>
                                        <RangeExpressions>
                                          <ScalarOperator ScalarString="[GI_RAW].[dbo].[Orders_ShoppingCart].[Order_Detail_ID] as [os1].[Order_Detail_ID]">
                                            <Identifier>
                                              <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="Order_Detail_ID" />
                                            </Identifier>
                                          </ScalarOperator>
                                        </RangeExpressions>
                                      </Prefix>
                                    </SeekKeys>
                                  </SeekPredicateNew>
                                </SeekPredicates>
                              </IndexScan>
                            </RelOp>
                          </NestedLoops>
                        </RelOp>
                        <RelOp NodeId="21" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateIO="0.003125" EstimateCPU="0.0001581" AvgRowSize="9" EstimatedTotalSubtreeCost="0.00639079" TableCardinality="11362" Parallel="1" EstimateRebinds="1" EstimateRewinds="0" EstimatedExecutionMode="Row">
                          <OutputList />
                          <RunTimeInformation>
                            <RunTimeCountersPerThread Thread="8" ActualRows="2" Batches="0" ActualExecutionMode="Row" ActualRowsRead="2" ActualEndOfScans="0" ActualExecutions="2" />
                            <RunTimeCountersPerThread Thread="2" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="0" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="5" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="0" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="4" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="0" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="7" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="0" ActualExecutions="0" />
                            <RunTimeCountersPerThread Thread="3" ActualRows="1" Batches="0" ActualExecutionMode="Row" ActualRowsRead="1" ActualEndOfScans="0" ActualExecutions="1" />
                            <RunTimeCountersPerThread Thread="1" ActualRows="0" Batches="0" ActualExecutionMode="Row" ActualEndOfScans="0" ActualExecutions="0" />
                            <RunTimeCountersPerThread Thread="6" ActualRows="3" Batches="0" ActualExecutionMode="Row" ActualRowsRead="3" ActualEndOfScans="0" ActualExecutions="3" />
                            <RunTimeCountersPerThread Thread="0" ActualRows="0" ActualEndOfScans="0" ActualExecutions="0" />
                          </RunTimeInformation>
                          <IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore">
                            <DefinedValues />
                            <Object Database="[GI_RAW]" Schema="[dbo]" Table="[Product]" Index="[Idx_ProductTypeID]" Alias="[p1]" IndexKind="NonClustered" />
                            <SeekPredicates>
                              <SeekPredicateNew>
                                <SeekKeys>
                                  <Prefix ScanType="EQ">
                                    <RangeColumns>
                                      <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Product]" Alias="[p1]" Column="ProductTypeID" />
                                      <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Product]" Alias="[p1]" Column="ProductID" />
                                    </RangeColumns>
                                    <RangeExpressions>
                                      <ScalarOperator ScalarString="(1)">
                                        <Const ConstValue="(1)" />
                                      </ScalarOperator>
                                      <ScalarOperator ScalarString="[GI_RAW].[dbo].[Orders_ShoppingCart].[ProductID] as [os1].[ProductID]">
                                        <Identifier>
                                          <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="ProductID" />
                                        </Identifier>
                                      </ScalarOperator>
                                    </RangeExpressions>
                                  </Prefix>
                                </SeekKeys>
                              </SeekPredicateNew>
                              <SeekPredicateNew>
                                <SeekKeys>
                                  <Prefix ScanType="EQ">
                                    <RangeColumns>
                                      <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Product]" Alias="[p1]" Column="ProductTypeID" />
                                      <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Product]" Alias="[p1]" Column="ProductID" />
                                    </RangeColumns>
                                    <RangeExpressions>
                                      <ScalarOperator ScalarString="(7)">
                                        <Const ConstValue="(7)" />
                                      </ScalarOperator>
                                      <ScalarOperator ScalarString="[GI_RAW].[dbo].[Orders_ShoppingCart].[ProductID] as [os1].[ProductID]">
                                        <Identifier>
                                          <ColumnReference Database="[GI_RAW]" Schema="[dbo]" Table="[Orders_ShoppingCart]" Alias="[os1]" Column="ProductID" />
                                        </Identifier>
                                      </ScalarOperator>
                                    </RangeExpressions>
                                  </Prefix>
                                </SeekKeys>
                              </SeekPredicateNew>
                            </SeekPredicates>
                          </IndexScan>
                        </RelOp>
                      </NestedLoops>
                    </RelOp>
                  </Parallelism>
                </RelOp>
              </Top>
            </RelOp>
          </QueryPlan>
        </StmtSimple>
      </Statements>
    </Batch>
  </BatchSequence>
</ShowPlanXML>
0
 
LVL 45

Accepted Solution

by:
Vitor Montalvão earned 500 total points
ID: 41781401
Thanks. You can also add a file instead of copy an paste all the text in the sqlplan.

Anyway, I can see that is complaining about the following missing index that will improve your query in more than 96%:
/*
Missing Index Details from sqlplan.sqlplan
The Query Processor estimates that implementing the following index could improve the query cost by 96.2979%.
*/

USE [GI_RAW]
GO
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[Orders] ([Order_Status])
INCLUDE ([OrderNumber],[CustomerID],[Transaction_Source],[CreatedOn])
GO

Open in new window

0
 

Author Comment

by:giveindia
ID: 41781421
hey vitor. This is really great. The execution time of the query actually reduced to 2sec. Just a question, does creating lot of indexes hinder performance in any way like in insert, update or delete( just out of curiosity)
0
 
LVL 45

Expert Comment

by:Vitor Montalvão
ID: 41781424
Bad side of the indexes is really when an insert happens since the engine needs to create the record in the table and also the index reference but unless you're having a massive insert process a single insert will be neglected.
But indexes are good to speed up Updates and Deletes since usually those commands are using the WHERE clause to find the records to be affected.
0

Featured Post

Get up to 2TB FREE CLOUD per backup license!

An exclusive Black Friday offer just for Expert Exchange audience! Buy any of our top-rated backup solutions & get up to 2TB free cloud per system! Perform local & cloud backup in the same step, and restore instantly—anytime, anywhere. Grab this deal now before it disappears!

Join & Write a Comment

I wrote this interesting script that really help me find jobs or procedures when working in a huge environment. I could I have written it as a Procedure but then I would have to have it on each machine or have a link to a server-related search that …
Ever wondered why sometimes your SQL Server is slow or unresponsive with connections spiking up but by the time you go in, all is well? The following article will show you how to install and configure a SQL job that will send you email alerts includ…
Using examples as well as descriptions, and references to Books Online, show the different Recovery Models available in SQL Server and explain, as well as show how full, differential and transaction log backups are performed
Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now