I am not sure if this post is relevant to this forum, but I am
desperate to find an answer for my problem.
Here goes my problem, I have a query
SELECT
BPE.[EmpLastNm]+'
'+ISNULL(BPE.[EmpFirstNm],'')+'('+ISNULL(BPE.[EmpFamiliarNm],'')+')'
AS
[ContactName]
,[EmpStatusCd]
,BPE.BusnPartEmpId
FROM
[dbo].[tblBusnPartEmp] AS BPE
inner JOIN [dbo].[tblDivBranchBusnPartEmp] AS DBBPE ON
BPE.[BusnPartEmpId]=DBBPE.[BusnPartEmpId]
inner JOIN [dbo].[tblDivBranch] AS DB ON
DB.[DivbranchId] = DBBPE.[DivbranchId]
WHERE
DB.[BusnPartId] = 2068--@.BusnPartId
AND DB.[DivNo] = '000'
and this query has different query plan in dev and test env.
I checked on statistics of this table, fragmentation of the table and
all look similar with no difference.
I am totally lost on what to be done next.
Query Plan in Dev. Env:
StmtText StmtId NodeId Parent PhysicalOp LogicalOp Argument
DefinedValues EstimateRows EstimateIO EstimateCPU AvgRowSize
TotalSubtreeCost OutputList Warnings Type Parallel EstimateExecutions
----
----
----
--
-
-- -- -- --
--
----
----
----
--
-- --
-- -- --
----
--
-- -- --
--
SELECT
BPE.[EmpLastNm]+'
'+ISNULL(BPE.[EmpFirstNm],'')+'('+ISNULL(BPE.[EmpFamiliarNm],'')+')'
AS
[ContactName]
-- ,[EmpStatusCd]
--,[dbo]. 33 1 0 NULL NULL 1 NULL 43156.262 NULL NULL NULL 92.666832
NULL NULL SELECT 0 NULL
|--Compute Scalar(DEFINE
'+isnull([BPE].[EmpFirstNm], '')+'('+isnull([BPE].[EmpFamili
arNm],
'')+')')) 33 2 1 Compute Scalar Compute Scalar
DEFINE
mpFirstNm],
'')+'('+isnull([BPE].[EmpFamiliarNm], '')+')')
[Expr1003]=[BPE].[EmpLastNm]+' '+isnull([BPE].[EmpFirstN
m],
'')+'('+isnull([BPE].[EmpFamiliarNm], '')+')' 43156.262 0.0
4.3156263E-3 168 92.666832 [BPE].[BusnPartEmpId], [Expr1003] NUL
L
PLAN_ROW 0 1.0
|--Hash Match(Inner Join,
HASH
2 Hash
Match Inner Join HASH
PartEmpId])
NULL 43156.262 0.0 5.5712514 97 92.662514 [BPE].[EmpFamiliarNm],
[BPE].[EmpFirstNm], [BPE].[EmpLastNm], [BPE].[BusnPa
rtEmpId] NULL
PLAN_ROW 0 1.0
|--Nested Loops(Inner Join, OUTER REFERENCES
TH
PREFETCH) 33 4 3 Nested Loops Inner Join OUTER
REFERENCES
0.18039317 1247 1.6252334 [DBBPE].[BusnPartEmpId] NULL PLAN_ROW 0 1.
0
| |--Filter(WHERE
WHERE
0.97286189 [DB].[DivBranchId] NULL PLAN_ROW 0 1.0
| | |--Bookmark Lookup(BOOKMARK
OBJECT
33 7 6
Bookmark Lookup Bookmark Lookup BOOKMARK
OBJECT
[DB].[DivBranchId], [DB].[DivNo] 317.99634 0.96872675 3.4979
597E-4 1233
0.97270924 [DB].[DivBranchId], [DB].[DivNo] NULL PLAN_ROW 0
1.0
| | |--Index Seek(OBJECT
vBranch1]
AS [DB]), SEEK
Index
Seek Index Seek OBJECT
ranch1] AS
[DB]), SEEK
2]
317.99634 3.2034251E-3 4.2924995E-4 19 3.6326749E-3 [Bmk1002] NULL
PLAN_ROW 0 1.0
| |--Index
Seek(OBJECT
ranchBusnPartEmp]
AS [DBBPE]), SEEK
Id]) ORDERED
FORWARD) 33 13 4 Index Seek Index Seek
OBJECT
BusnPartEmp]
AS [DBBPE]), SEEK
Id]) ORDERED
FORWARD [DBBPE].[BusnPartEmpId] 304.24017 3.2034251E-3 4.1407693E-4
23
0.47197837 [DBBPE].[BusnPartEmpId] NULL PLAN_ROW 0 141.84932
|--Table Scan(OBJECT
)) 33 14 3
Table Scan Table Scan OBJECT
#91;BPE])
[BPE].[EmpFamiliarNm], [BPE].[EmpFirstNm], [BPE].[Em
pLastNm],
[BPE].[BusnPartEmpId] 1114682.0 84.239799 1.2262287 3282 85.466026
[BPE].[EmpFamiliarNm], [BPE].[EmpFirstNm], [BPE].[Em
pLastNm],
[BPE].[BusnPartEmpId] NULL PLAN_ROW 0 1.0
Query plan in test env.:
StmtText StmtId NodeId Parent PhysicalOp LogicalOp Argument
DefinedValues EstimateRows EstimateIO EstimateCPU AvgRowSize
TotalSubtreeCost OutputList Warnings Type Parallel EstimateExecutions
----
----
----
--
-
-- -- -- --
--
----
----
----
--
-- --
-- -- --
----
--
-- --
-- --
SELECT
BPE.[EmpLastNm]+'
'+ISNULL(BPE.[EmpFirstNm],'')+'('+ISNULL(BPE.[EmpFamiliarNm],'')+')'
AS
[ContactName]
,[EmpStatusCd]
,BPE.BusnPar 17 1 0 NULL NULL 1 NULL 4826.1626 NULL NULL NULL 10.43982
NULL NULL SELECT 0 NULL
|--Compute Scalar(DEFINE
'+isnull([BPE].[EmpFirstNm], '')+'('+isnull([BPE].[EmpFamili
arNm],
'')+')')) 17 2 1 Compute Scalar Compute Scalar
DEFINE
mpFirstNm],
'')+'('+isnull([BPE].[EmpFamiliarNm], '')+')')
[Expr1003]=[BPE].[EmpLastNm]+' '+isnull([BPE].[EmpFirstN
m],
'')+'('+isnull([BPE].[EmpFamiliarNm], '')+')' 4826.1626 0.0
4.8261625E-4 172 10.43982 [BPE].[EmpStatusCd], [BPE].[BusnPa
rtEmpId],
[Expr1003] NULL PLAN_ROW 0 1.0
|--Bookmark Lookup(BOOKMARK
OBJECT
H) 17 3 2
Bookmark Lookup Bookmark Lookup BOOKMARK
OBJECT
H
[BPE].[EmpFamiliarNm], [BPE].[EmpFirstNm], [BPE].[Em
pLastNm],
[BPE].[EmpStatusCd], [BPE].[BusnPartEmpId] 4826.1626 2.28744
51
5.308779E-3 270 10.439338 [BPE].[EmpFamiliarNm], [BPE].[EmpF
irstNm],
[BPE].[EmpLastNm], [BPE].[EmpStatusCd], [BPE].[BusnP
artEmpId] NULL
PLAN_ROW 0 1.0
|--Parallelism(Gather Streams) 17 5 3 Parallelism Gather Streams NULL
NULL 4826.1626 0.0 3.8873836E-2 23 8.1465836 [Bmk1000] NULL PLAN_ROW -1
1.0
|--Nested Loops(Inner Join, OUTER REFERENCES
])
WITH PREFETCH) 17 6 5 Nested Loops Inner Join OUTER
REFERENCES
0
0.01008668 23 8.1077099 [Bmk1000] NULL PLAN_ROW -1 1.0
|--Sort(ORDER BY
ER
BY
4.6113774E-2 11 1.034305 [DBBPE].[BusnPartEmpId] NULL PLAN_ROW -1 1.
0
| |--Nested Loops(Inner Join, OUTER REFERENCES
WITH PREFETCH) 17 9 8 Nested Loops Inner Join OUTER
REFERENCES
0.01008668 43 0.98256058 [DBBPE].[BusnPartEmpId] NULL PLAN_ROW -1 1.
0
| |--Filter(WHERE
WHERE
0.96141553 [DB].[DivBranchId] NULL PLAN_ROW -1 1.0
| | |--Bookmark Lookup(BOOKMARK
OBJECT
17 12 11
Bookmark Lookup Bookmark Lookup BOOKMARK
OBJECT
[DB].[DivBranchId], [DB].[DivNo] 315.0 0.95935196 1.7324999E
-4 29
0.96133989 [DB].[DivBranchId], [DB].[DivNo] NO
STATS
| | |--Index Seek(OBJECT
vBranch1]
AS [DB]), SEEK
2 Index
Seek Index Seek OBJECT
ranch1] AS
[DB]), SEEK
2] 315.0
1.6017125E-3 2.129725E-4 19 1.8146849E-3 [Bmk1002] NULL PLAN_ROW -1 1.0
| |--Index
Seek(OBJECT
ranchBusnPartEmp]
AS [DBBPE]), SEEK
Id]) ORDERED
FORWARD) 17 18 9 Index Seek Index Seek
OBJECT
BusnPartEmp]
AS [DBBPE]), SEEK
Id]) ORDERED
FORWARD [DBBPE].[BusnPartEmpId] 312.5162 3.2034251E-3 4.2320538E-4 2
3
0.01105837 [DBBPE].[BusnPartEmpId] NULL PLAN_ROW -1 15.442919
|--Index Seek(OBJECT
PartEmp] AS
[BPE]), SEEK
Id]) ORDERED
FORWARD) 17 19 6 Index Seek Index Seek
OBJECT
91;BPE]),
SEEK
FORWARD
[Bmk1000] 1.0 3.2034251E-3 7.9603E-5 19 7.0633183 [Bmk1000] NULL
PLAN_ROW -1 4826.1626
If you notice the query plan are different by a major physical
operation. Test env. query plan uses index seek where as dev
environment query plan uses a table scan. Why? I am totally confused.
I checked on indexes also, and in both env. it is the same.
For your quick reference here are the index details too
index_name index_description index_keys
----
----
----
----
----
----
----
----
--
-
IDXBusnPartEmp1 nonclustered located on PRIMARY EmpNTLogin
IX_tblBusnPartEmp nonclustered located on PRIMARY EdgeUserTypeCd
XPKBusnPartEmp nonclustered, unique, primary key located on PRIMARY
BusnPartEmpId
Can somebody help me on this issue? The sql instances sit on different
system having same hardware, server configuration. The service packs
are also same.
Thanks in advance.Hi
Run DBCC DROPCLEANBUFFERS and run it again
"VIKING" <msrviking@.gmail.com> wrote in message
news:1163641697.241152.88950@.i42g2000cwa.googlegroups.com...
> Hi there,
> I am not sure if this post is relevant to this forum, but I am
> desperate to find an answer for my problem.
> Here goes my problem, I have a query
> SELECT
> BPE.[EmpLastNm]+'
> '+ISNULL(BPE.[EmpFirstNm],'')+'('+ISNULL(BPE.[EmpFamiliarNm],'')+'
)' AS
> [ContactName]
> ,[EmpStatusCd]
> ,BPE.BusnPartEmpId
> FROM
> [dbo].[tblBusnPartEmp] AS BPE
> inner JOIN [dbo].[tblDivBranchBusnPartEmp] AS DBBPE ON
> BPE.[BusnPartEmpId]=DBBPE.[BusnPartEmpId]
> inner JOIN [dbo].[tblDivBranch] AS DB ON
> DB.[DivbranchId] = DBBPE.[DivbranchId]
> WHERE
> DB.[BusnPartId] = 2068--@.BusnPartId
> AND DB.[DivNo] = '000'
> and this query has different query plan in dev and test env.
> I checked on statistics of this table, fragmentation of the table and
> all look similar with no difference.
> I am totally lost on what to be done next.
> Query Plan in Dev. Env:
> StmtText StmtId NodeId Parent PhysicalOp LogicalOp Argument
> DefinedValues EstimateRows EstimateIO EstimateCPU AvgRowSize
> TotalSubtreeCost OutputList Warnings Type Parallel EstimateExecutions
> ----
----
----
--
--
> -- -- -- --
> --
> ----
----
> ----
--
> -- --
> -- -- --
> ----
--
> -- -- --
> --
> SELECT
> BPE.[EmpLastNm]+'
> '+ISNULL(BPE.[EmpFirstNm],'')+'('+ISNULL(BPE.[EmpFamiliarNm],'')+'
)' AS
> [ContactName]
> -- ,[EmpStatusCd]
> --,[dbo]. 33 1 0 NULL NULL 1 NULL 43156.262 NULL NULL NULL 92.666832
> NULL NULL SELECT 0 NULL
> |--Compute Scalar(DEFINE
> '+isnull([BPE].[EmpFirstNm], '')+'('+isnull([BPE].[EmpFami
liarNm],
> '')+')')) 33 2 1 Compute Scalar Compute Scalar
> DEFINE
;EmpFirstNm],
> '')+'('+isnull([BPE].[EmpFamiliarNm], '')+')')
> [Expr1003]=[BPE].[EmpLastNm]+' '+isnull([BPE].[EmpFirs
tNm],
> '')+'('+isnull([BPE].[EmpFamiliarNm], '')+')' 43156.262 0.0
> 4.3156263E-3 168 92.666832 [BPE].[BusnPartEmpId], [Expr1003] N
ULL
> PLAN_ROW 0 1.0
> |--Hash Match(Inner Join,
> HASH
3 2 Hash
> Match Inner Join HASH
snPartEmpId])
> NULL 43156.262 0.0 5.5712514 97 92.662514 [BPE].[EmpFamiliarNm],
> [BPE].[EmpFirstNm], [BPE].[EmpLastNm], [BPE].[Busn
PartEmpId] NULL
> PLAN_ROW 0 1.0
> |--Nested Loops(Inner Join, OUTER REFERENCES
WITH
> PREFETCH) 33 4 3 Nested Loops Inner Join OUTER
> REFERENCES
> 0.18039317 1247 1.6252334 [DBBPE].[BusnPartEmpId] NULL PLAN_ROW 0
1.0
> | |--Filter(WHERE
> WHERE
> 0.97286189 [DB].[DivBranchId] NULL PLAN_ROW 0 1.0
> | | |--Bookmark Lookup(BOOKMARK
> OBJECT
) 33 7 6
> Bookmark Lookup Bookmark Lookup BOOKMARK
> OBJECT
> [DB].[DivBranchId], [DB].[DivNo] 317.99634 0.96872675 3.49
79597E-4 1233
> 0.97270924 [DB].[DivBranchId], [DB].[DivNo] NULL PLAN_ROW
0 1.0
> | | |--Index Seek(OBJECT
DivBranch1]
> AS [DB]), SEEK
7 Index
> Seek Index Seek OBJECT
vBranch1] AS
> [DB]), SEEK
002]
> 317.99634 3.2034251E-3 4.2924995E-4 19 3.6326749E-3 [Bmk1002] NULL
> PLAN_ROW 0 1.0
> | |--Index
> Seek(OBJECT
vBranchBusnPartEmp]
> AS [DBBPE]), SEEK
chId]) ORDERED
> FORWARD) 33 13 4 Index Seek Index Seek
> OBJECT
chBusnPartEmp]
> AS [DBBPE]), SEEK
chId]) ORDERED
> FORWARD [DBBPE].[BusnPartEmpId] 304.24017 3.2034251E-3 4.1407693E-
4 23
> 0.47197837 [DBBPE].[BusnPartEmpId] NULL PLAN_ROW 0 141.84932
> |--Table Scan(OBJECT
E])) 33 14 3
> Table Scan Table Scan OBJECT
[BPE])
> [BPE].[EmpFamiliarNm], [BPE].[EmpFirstNm], [BPE].[
EmpLastNm],
> [BPE].[BusnPartEmpId] 1114682.0 84.239799 1.2262287 3282 85.466026
> [BPE].[EmpFamiliarNm], [BPE].[EmpFirstNm], [BPE].[
EmpLastNm],
> [BPE].[BusnPartEmpId] NULL PLAN_ROW 0 1.0
>
> Query plan in test env.:
> StmtText StmtId NodeId Parent PhysicalOp LogicalOp Argument
> DefinedValues EstimateRows EstimateIO EstimateCPU AvgRowSize
> TotalSubtreeCost OutputList Warnings Type Parallel EstimateExecutions
> ----
----
----
--
--
> -- -- -- --
> --
> ----
----
> ----
--
> -- --
> -- -- --
> ----
--
> -- --
> -- --
> SELECT
> BPE.[EmpLastNm]+'
> '+ISNULL(BPE.[EmpFirstNm],'')+'('+ISNULL(BPE.[EmpFamiliarNm],'')+'
)' AS
> [ContactName]
> ,[EmpStatusCd]
> ,BPE.BusnPar 17 1 0 NULL NULL 1 NULL 4826.1626 NULL NULL NULL 10.43982
> NULL NULL SELECT 0 NULL
> |--Compute Scalar(DEFINE
> '+isnull([BPE].[EmpFirstNm], '')+'('+isnull([BPE].[EmpFami
liarNm],
> '')+')')) 17 2 1 Compute Scalar Compute Scalar
> DEFINE
;EmpFirstNm],
> '')+'('+isnull([BPE].[EmpFamiliarNm], '')+')')
> [Expr1003]=[BPE].[EmpLastNm]+' '+isnull([BPE].[EmpFirs
tNm],
> '')+'('+isnull([BPE].[EmpFamiliarNm], '')+')' 4826.1626 0.0
> 4.8261625E-4 172 10.43982 [BPE].[EmpStatusCd], [BPE].[Busn
PartEmpId],
> [Expr1003] NULL PLAN_ROW 0 1.0
> |--Bookmark Lookup(BOOKMARK
> OBJECT
TCH) 17 3 2
> Bookmark Lookup Bookmark Lookup BOOKMARK
> OBJECT
TCH
> [BPE].[EmpFamiliarNm], [BPE].[EmpFirstNm], [BPE].[
EmpLastNm],
> [BPE].[EmpStatusCd], [BPE].[BusnPartEmpId] 4826.1626 2.287
4451
> 5.308779E-3 270 10.439338 [BPE].[EmpFamiliarNm], [BPE].[Em
pFirstNm],
> [BPE].[EmpLastNm], [BPE].[EmpStatusCd], [BPE].[Bus
nPartEmpId] NULL
> PLAN_ROW 0 1.0
> |--Parallelism(Gather Streams) 17 5 3 Parallelism Gather Streams NULL
> NULL 4826.1626 0.0 3.8873836E-2 23 8.1465836 [Bmk1000] NULL PLAN_ROW -
1
> 1.0
> |--Nested Loops(Inner Join, OUTER REFERENCES
Id])
> WITH PREFETCH) 17 6 5 Nested Loops Inner Join OUTER
> REFERENCES
0.0
> 0.01008668 23 8.1077099 [Bmk1000] NULL PLAN_ROW -1 1.0
> |--Sort(ORDER BY
RDER
> BY
> 4.6113774E-2 11 1.034305 [DBBPE].[BusnPartEmpId] NULL PLAN_ROW -1
1.0
> | |--Nested Loops(Inner Join, OUTER REFERENCES
)
> WITH PREFETCH) 17 9 8 Nested Loops Inner Join OUTER
> REFERENCES
> 0.01008668 43 0.98256058 [DBBPE].[BusnPartEmpId] NULL PLAN_ROW -1
1.0
> | |--Filter(WHERE
> WHERE
> 0.96141553 [DB].[DivBranchId] NULL PLAN_ROW -1 1.0
> | | |--Bookmark Lookup(BOOKMARK
> OBJECT
) 17 12 11
> Bookmark Lookup Bookmark Lookup BOOKMARK
> OBJECT
> [DB].[DivBranchId], [DB].[DivNo] 315.0 0.95935196 1.732499
9E-4 29
> 0.96133989 [DB].[DivBranchId], [DB].[DivNo] NO
> STATS
> | | |--Index Seek(OBJECT
DivBranch1]
> AS [DB]), SEEK
12 Index
> Seek Index Seek OBJECT
vBranch1] AS
> [DB]), SEEK
002] 315.0
> 1.6017125E-3 2.129725E-4 19 1.8146849E-3 [Bmk1002] NULL PLAN_ROW -1 1.
0
> | |--Index
> Seek(OBJECT
vBranchBusnPartEmp]
> AS [DBBPE]), SEEK
chId]) ORDERED
> FORWARD) 17 18 9 Index Seek Index Seek
> OBJECT
chBusnPartEmp]
> AS [DBBPE]), SEEK
chId]) ORDERED
> FORWARD [DBBPE].[BusnPartEmpId] 312.5162 3.2034251E-3 4.2320538E-4
23
> 0.01105837 [DBBPE].[BusnPartEmpId] NULL PLAN_ROW -1 15.442919
> |--Index Seek(OBJECT
snPartEmp] AS
> [BPE]), SEEK
mpId]) ORDERED
> FORWARD) 17 19 6 Index Seek Index Seek
> OBJECT
[BPE]),
> SEEK
ED FORWARD
> [Bmk1000] 1.0 3.2034251E-3 7.9603E-5 19 7.0633183 [Bmk1000] NULL
> PLAN_ROW -1 4826.1626
> If you notice the query plan are different by a major physical
> operation. Test env. query plan uses index seek where as dev
> environment query plan uses a table scan. Why? I am totally confused.
> I checked on indexes also, and in both env. it is the same.
> For your quick reference here are the index details too
> index_name index_description index_keys
> ----
---
> ----
----
----
> ----
----
----
--
--
> IDXBusnPartEmp1 nonclustered located on PRIMARY EmpNTLogin
> IX_tblBusnPartEmp nonclustered located on PRIMARY EdgeUserTypeCd
> XPKBusnPartEmp nonclustered, unique, primary key located on PRIMARY
> BusnPartEmpId
>
> Can somebody help me on this issue? The sql instances sit on different
> system having same hardware, server configuration. The service packs
> are also same.
> Thanks in advance.
>sql
No comments:
Post a Comment