[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 95
  • Last Modified:

Optimizing SQL Query

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
giveindia
Asked:
giveindia
  • 8
  • 4
  • 3
  • +1
1 Solution
 
Vitor MontalvãoMSSQL Senior EngineerCommented:
Can you post the respective Query Execution Plan, so we can check if some index is missing?
0
 
Éric MoreauSenior .Net ConsultantCommented:
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
 
Vitor MontalvãoMSSQL Senior EngineerCommented:
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
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
Éric MoreauSenior .Net ConsultantCommented:
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
 
Vitor MontalvãoMSSQL Senior EngineerCommented:
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
 
Éric MoreauSenior .Net ConsultantCommented:
If not mistaken it was SQL 2008 R2
0
 
Vitor MontalvãoMSSQL Senior EngineerCommented:
I would believe better if it was MSSQL 2000 or previous versions :)
0
 
Scott PletcherSenior DBACommented:
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
 
giveindiaAuthor Commented:
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
 
Vitor MontalvãoMSSQL Senior EngineerCommented:
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
 
giveindiaAuthor Commented:
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
 
Vitor MontalvãoMSSQL Senior EngineerCommented:
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
 
giveindiaAuthor Commented:
<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
 
Vitor MontalvãoMSSQL Senior EngineerCommented:
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
 
giveindiaAuthor Commented:
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
 
Vitor MontalvãoMSSQL Senior EngineerCommented:
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

Receive 1:1 tech help

Solve your biggest tech problems alongside global tech experts with 1:1 help.

  • 8
  • 4
  • 3
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now