my version is:
Microsoft SQL Server 2008 (SP3) - 10.0.5538.0 (X64) Apr 3 2015 14:50:02 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)
I have a query which is taking a long time. analyzing the QEP I see a large gap between the estimated number of rows and the actual number of rows. I simplified the query to just that section and the result is the same. estimated 1 row actual 6000+ rows. (the section is the basis for a join to other large tables which in stead of 1 row must join 6000+)
I have already updated statistics and recompiled the query but to no avail
how can I get sql server to create a better estimate and hence a better QEP?
the shortened query:
select * FROM dbo.items
WHERE items.net_code=1
and dbo.items.item_num between 1 and 99000 and items.year_num=1971
the QEP (in XML)
<?xml version="1.0" encoding="utf-16"?><ShowPlanXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.1.1" Build="10.0.5538.0" xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan">
<BatchSequence>
<Batch>
<Statements>
<StmtSimple StatementCompId="1" StatementEstRows="1" StatementId="1" StatementOptmLevel="TRIVIAL" StatementSubTreeCost="0.0032833" StatementText="SELECT * FROM [dbo].[items] WHERE [items].[net_code]=@1 AND ([dbo].[items].[item_num]>=@2 AND [dbo].[items].[item_num]<=@3) AND [items].[year_num]=@4" StatementType="SELECT" QueryHash="0x4C4EDD0E4C55883C" QueryPlanHash="0x3E389B754A284D59">
<StatementSetOptions ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" NUMERIC_ROUNDABORT="false" QUOTED_IDENTIFIER="true" />
<QueryPlan DegreeOfParallelism="1" CachedPlanSize="40" CompileTime="17" CompileCPU="17" CompileMemory="336">
<RelOp AvgRowSize="8340" EstimateCPU="1E-07" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1" LogicalOp="Compute Scalar" NodeId="0" Parallel="false" PhysicalOp="Compute Scalar" EstimatedTotalSubtreeCost="0.0032833">
<OutputList>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="net_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="year_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="broadcast_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="sort_order" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_title" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_desc" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="duration" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="update_date" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="rowguid" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_program_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_archive_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="broadcast_archive_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="TC" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="lang_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="updated_by" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_broadcast_date" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="duration_time" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_TC" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="created_by" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="create_date" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_search" ComputedColumn="true" />
</OutputList>
<ComputeScalar>
<DefinedValues>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_search" ComputedColumn="true" />
<ScalarOperator ScalarString="[Expr1005]+isnull([recordings].[dbo].[items].[item_desc],CONVERT_IMPLICIT(nvarchar(max),'',0))">
<Arithmetic Operation="ADD">
<ScalarOperator>
<Identifier>
<ColumnReference Column="Expr1005" />
</Identifier>
</ScalarOperator>
<ScalarOperator>
<Intrinsic FunctionName="isnull">
<ScalarOperator>
<Identifier>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_desc" />
</Identifier>
</ScalarOperator>
<ScalarOperator>
<Identifier>
<ColumnReference Column="ConstExpr1003">
<ScalarOperator>
<Convert DataType="nvarchar(max)" Length="2147483647" Style="0" Implicit="true">
<ScalarOperator>
<Const ConstValue="''" />
</ScalarOperator>
</Convert>
</ScalarOperator>
</ColumnReference>
</Identifier>
</ScalarOperator>
</Intrinsic>
</ScalarOperator>
</Arithmetic>
</ScalarOperator>
</DefinedValue>
</DefinedValues>
<RelOp AvgRowSize="4517" EstimateCPU="1E-07" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1" LogicalOp="Compute Scalar" NodeId="1" Parallel="false" PhysicalOp="Compute Scalar" EstimatedTotalSubtreeCost="0.0032832">
<OutputList>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="net_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="year_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="broadcast_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="sort_order" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_title" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_desc" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="duration" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="update_date" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="rowguid" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_program_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_archive_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="broadcast_archive_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="TC" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="lang_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="updated_by" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_broadcast_date" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="duration_time" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_TC" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="created_by" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="create_date" />
<ColumnReference Column="Expr1005" />
</OutputList>
<ComputeScalar>
<DefinedValues>
<DefinedValue>
<ColumnReference Column="Expr1005" />
<ScalarOperator ScalarString="ltrim(isnull([recordings].[dbo].[items].[item_title],N'')+N' ')">
<Intrinsic FunctionName="ltrim">
<ScalarOperator>
<Arithmetic Operation="ADD">
<ScalarOperator>
<Intrinsic FunctionName="isnull">
<ScalarOperator>
<Identifier>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_title" />
</Identifier>
</ScalarOperator>
<ScalarOperator>
<Const ConstValue="N''" />
</ScalarOperator>
</Intrinsic>
</ScalarOperator>
<ScalarOperator>
<Const ConstValue="N' '" />
</ScalarOperator>
</Arithmetic>
</ScalarOperator>
</Intrinsic>
</ScalarOperator>
</DefinedValue>
</DefinedValues>
<RelOp AvgRowSize="4314" EstimateCPU="0.0001581" EstimateIO="0.003125" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1" LogicalOp="Clustered Index Seek" NodeId="2" Parallel="false" PhysicalOp="Clustered Index Seek" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="1274590">
<OutputList>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="net_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="year_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="broadcast_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="sort_order" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_title" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_desc" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="duration" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="update_date" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="rowguid" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_program_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_archive_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="broadcast_archive_num" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="TC" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="lang_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="updated_by" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_broadcast_date" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="duration_time" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_TC" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="created_by" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="create_date" />
</OutputList>
<RunTimeInformation>
<RunTimeCountersPerThread Thread="0" ActualRows="6258" ActualEndOfScans="1" ActualExecutions="1" />
</RunTimeInformation>
<IndexScan Ordered="true" ScanDirection="FORWARD" ForcedIndex="false" ForceSeek="false" NoExpandHint="false">
<DefinedValues>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="net_code" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="year_num" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_num" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="broadcast_code" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="sort_order" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_title" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_desc" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="duration" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="update_date" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="rowguid" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_program_code" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_archive_num" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="broadcast_archive_num" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="TC" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="lang_code" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="updated_by" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_broadcast_date" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="duration_time" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="orig_TC" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="created_by" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="create_date" />
</DefinedValue>
</DefinedValues>
<Object Database="[recordings]" Schema="[dbo]" Table="[items]" Index="[PK_items]" IndexKind="Clustered" />
<SeekPredicates>
<SeekPredicateNew>
<SeekKeys>
<Prefix ScanType="EQ">
<RangeColumns>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="net_code" />
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="year_num" />
</RangeColumns>
<RangeExpressions>
<ScalarOperator ScalarString="[@1]">
<Identifier>
<ColumnReference Column="@1" />
</Identifier>
</ScalarOperator>
<ScalarOperator ScalarString="[@4]">
<Identifier>
<ColumnReference Column="@4" />
</Identifier>
</ScalarOperator>
</RangeExpressions>
</Prefix>
<StartRange ScanType="GE">
<RangeColumns>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_num" />
</RangeColumns>
<RangeExpressions>
<ScalarOperator ScalarString="CONVERT_IMPLICIT(int,[@2],0)">
<Identifier>
<ColumnReference Column="ConstExpr1004">
<ScalarOperator>
<Convert DataType="int" Style="0" Implicit="true">
<ScalarOperator>
<Identifier>
<ColumnReference Column="@2" />
</Identifier>
</ScalarOperator>
</Convert>
</ScalarOperator>
</ColumnReference>
</Identifier>
</ScalarOperator>
</RangeExpressions>
</StartRange>
<EndRange ScanType="LE">
<RangeColumns>
<ColumnReference Database="[recordings]" Schema="[dbo]" Table="[items]" Column="item_num" />
</RangeColumns>
<RangeExpressions>
<ScalarOperator ScalarString="[@3]">
<Identifier>
<ColumnReference Column="@3" />
</Identifier>
</ScalarOperator>
</RangeExpressions>
</EndRange>
</SeekKeys>
</SeekPredicateNew>
</SeekPredicates>
</IndexScan>
</RelOp>
</ComputeScalar>
</RelOp>
</ComputeScalar>
</RelOp>
<ParameterList>
<ColumnReference Column="@4" ParameterCompiledValue="(1971)" ParameterRuntimeValue="(1971)" />
<ColumnReference Column="@3" ParameterCompiledValue="(99000)" ParameterRuntimeValue="(99000)" />
<ColumnReference Column="@2" ParameterCompiledValue="(1)" ParameterRuntimeValue="(1)" />
<ColumnReference Column="@1" ParameterCompiledValue="(1)" ParameterRuntimeValue="(1)" />
</ParameterList>
</QueryPlan>
</StmtSimple>
</Statements>
</Batch>
</BatchSequence>
</ShowPlanXML>