August 5, 2014 at 6:27 am
Hi all
I have the following query
SELECT T1.ITEMID,
T1.ITEMTYPE,
T1.PURCHMODEL,
T1.HEIGHT,
T1.WIDTH,
T1.SALESMODEL,
T1.COSTGROUPID,
T1.REQGROUPID,
T1.EPCMANAGER,
T1.PRIMARYVENDORID,
T1.NETWEIGHT,
T1.DEPTH,
T1.UNITVOLUME,
T1.BOMUNITID,
T1.ITEMPRICETOLERANCEGROUPID,
T1.DENSITY,
T1.COSTMODEL,
T1.USEALTITEMID,
T1.ALTITEMID,
T1.MATCHINGPOLICY,
T1.INTRACODE,
T1.PRODFLUSHINGPRINCIP,
T1.MINIMUMPALLETQUANTITY,
T1.PBAITEMAUTOGENERATED,
T1.WMSARRIVALHANDLINGTIME,
T1.BOMMANUALRECEIPT,
T1.PHANTOM,
T1.INTRAUNIT,
T1.BOMLEVEL,
T1.BATCHNUMGROUPID,
T1.AUTOREPORTFINISHED,
T1.ORIGCOUNTRYREGIONID,
T1.STATISTICSFACTOR,
T1.ALTCONFIGID,
T1.STANDARDCONFIGID,
T1.PRODPOOLID,
T1.PROPERTYID,
T1.ABCTIEUP,
T1.ABCREVENUE,
T1.ABCVALUE,
T1.ABCCONTRIBUTIONMARGIN,
T1.COMMISSIONGROUPID,
T1.SALESPERCENTMARKUP,
T1.SALESCONTRIBUTIONRATIO,
T1.SALESPRICEMODELBASIC,
T1.NAMEALIAS,
T1.PRODGROUPID,
T1.PROJCATEGORYID,
T1.GROSSDEPTH,
T1.GROSSWIDTH,
T1.GROSSHEIGHT,
T1.STANDARDPALLETQUANTITY,
T1.QTYPERLAYER,
T1.SORTCODE,
T1.SERIALNUMGROUPID,
T1.ITEMBUYERGROUPID,
T1.TAXPACKAGINGQTY,
T1.WMSPALLETTYPEID,
T1.ORIGSTATEID,
T1.WMSPICKINGQTYTIME,
T1.TARAWEIGHT,
T1.PACKAGINGGROUPID,
T1.SCRAPVAR,
T1.SCRAPCONST,
T1.ITEMDIMCOSTPRICE,
T1.FORECASTDMPINCLUDE,
T1.PRODUCT,
T1.PALLETTAGGING,
T1.ITEMTAGGINGLEVEL,
T1.DEFAULTDIMENSION,
T1.BOMCALCGROUPID,
T1.PBAITEMCONFIGURABLE,
T1.PBAINVENTITEMGROUPID,
T1.PBAHIDEDIALOG,
T1.PBAHIDEAPPROVAL,
T1.PBAAUTOSTART,
T1.PBAMANDATORYCONFIG,
T1.PDSFREIGHTALLOCATIONGROUPID,
T1.PDSITEMREBATEGROUPID,
T1.PDSVENDORCHECKITEM,
T1.PMFPLANNINGITEMID,
T1.PMFPRODUCTTYPE,
T1.PMFYIELDPCT,
T1.BATCHMERGEDATECALCULATIONMETHOD,
T1.MODIFIEDDATETIME,
T1.DEL_MODIFIEDTIME,
T1.MODIFIEDBY,
T1.CREATEDDATETIME,
T1.DEL_CREATEDTIME,
T1.CREATEDBY,
T1.RECVERSION,
T1.PARTITION,
T1.RECID,
T2.UOMSEQGROUPID,
T2.MAXPICKQTY,
T2.ITEMID,
T2.RFDESCRIPTION1,
T2.RFDESCRIPTION2,
T2.PACKSIZECATEOGRYID,
T2.FILTERCODE,
T2.FILTERCODE2_,
T2.FILTERCODE3_,
T2.FILTERCODE4_,
T2.FILTERGROUP,
T2.FILTERGROUP2_,
T2.FILTERCHANGED,
T2.PRODQTY,
T2.PHYSDIMID,
T2.PACKAGECLASSID,
T2.PICKWCNEG,
T2.MODIFIEDDATETIME,
T2.MODIFIEDBY,
T2.RECVERSION,
T2.PARTITION,
T2.RECID,
T3.ITEMDATAAREAID,
T3.MODELGROUPID,
T3.ITEMID,
T3.MODELGROUPDATAAREAID,
T3.RECVERSION,
T3.PARTITION,
T3.RECID,
T4.ITEMID,
T4.ITEMDATAAREAID,
T4.ITEMGROUPID,
T4.ITEMGROUPDATAAREAID,
T4.RECVERSION,
T4.PARTITION,
T4.RECID,
T5.TRACKINGDIMENSIONGROUP,
T5.ITEMID,
T5.ITEMDATAAREAID,
T5.RECVERSION,
T5.PARTITION,
T5.RECID,
T6.STORAGEDIMENSIONGROUP,
T6.ITEMID,
T6.ITEMDATAAREAID,
T6.RECVERSION,
T6.PARTITION,
T6.RECID,
T7.PRODUCTMASTER,
T7.RETAITOTALWEIGHT,
T7.VARIANTCONFIGURATIONTECHNOLOGY,
T7.INSTANCERELATIONTYPE,
T7.DISPLAYPRODUCTNUMBER,
T7.SEARCHNAME,
T7.PRODUCTTYPE,
T7.MODIFIEDBY,
T7.RECVERSION,
T7.RELATIONTYPE,
T7.PARTITION,
T7.RECID,
T8.DEFAULTSITE,
T8.EQUIVALENTFACTOR,
T8.FOESEARCHTEXT,
T8.ITEMID,
T8.ITEMPRICEGROUPID,
T8.ITEMSTATUS,
T8.MASTERITEMID,
T8.PACKSIZE,
T8.PURCH_MANDATORYFIXEDASSET,
T8.PURCH_SPECIFICTEXT,
T8.MODIFIEDDATETIME,
T8.CREATEDDATETIME,
T8.RECVERSION,
T8.PARTITION,
T8.RECID,
T9.PRODUCTDIMENSIONGROUP,
T9.RECVERSION,
T9.RECID,
T10.NAME,
T10.RECVERSION,
T10.RECID,
T11.NAME,
T11.RECVERSION,
T11.RECID
FROM INVENTTABLE T1 LEFT
OUTER
JOIN WHSINVENTTABLE T2 ON (((T2.PARTITION=5637144576)
AND (T2.DATAAREAID='abr'))
AND (T1.ITEMID=T2.ITEMID)) LEFT
OUTER
JOIN INVENTMODELGROUPITEM T3 ON ((T3.PARTITION=5637144576)
AND ((T1.ITEMID=T3.ITEMID)
AND (T1.DATAAREAID=T3.ITEMDATAAREAID))) LEFT
OUTER
JOIN INVENTITEMGROUPITEM T4 ON ((T4.PARTITION=5637144576)
AND ((T1.ITEMID=T4.ITEMID)
AND (T1.DATAAREAID=T4.ITEMDATAAREAID))) LEFT
OUTER
JOIN ECORESTRACKINGDIMENSIONGROUPITEM T5 ON ((T5.PARTITION=5637144576)
AND ((T1.ITEMID=T5.ITEMID)
AND (T1.DATAAREAID=T5.ITEMDATAAREAID))) LEFT
OUTER
JOIN ECORESSTORAGEDIMENSIONGROUPITEM T6 ON ((T6.PARTITION=5637144576)
AND ((T1.ITEMID=T6.ITEMID)
AND (T1.DATAAREAID=T6.ITEMDATAAREAID))) CROSS
JOIN ECORESPRODUCT T7 LEFT
OUTER
JOIN MARINVENTTABLE T8 ON (((T8.PARTITION=5637144576)
AND (T8.DATAAREAID='abr'))
AND (T1.ITEMID=T8.ITEMID)) LEFT
OUTER
JOIN ECORESPRODUCTDIMENSIONGROUPPRODUCT T9 ON ((T9.PARTITION=5637144576)
AND (T7.RECID=T9.PRODUCT)) LEFT
OUTER
JOIN ECORESPRODUCTTRANSLATION T10 ON ((T10.PARTITION=5637144576)
AND ((T10.LANGUAGEID='en-gb')
AND (T7.RECID=T10.PRODUCT))) LEFT
OUTER
JOIN ECORESPRODUCTDIMENSIONGROUP T11 ON ((T11.PARTITION=5637144576)
AND (T9.PRODUCTDIMENSIONGROUP=T11.RECID))
WHERE ((T1.PARTITION=5637144576)
AND (T1.DATAAREAID='abr'))
AND ((T7.PARTITION=5637144576)
AND (T1.PRODUCT=T7.RECID))
ORDER BY T1.ITEMID OPTION(FAST 6)
With STATISTICS IO ON I get the following
(2849 row(s) affected)
Table 'ECORESPRODUCTDIMENSIONGROUP'. Scan count 1, logical reads 5699, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'ECORESPRODUCTTRANSLATION'. Scan count 0, logical reads 8734, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'ECORESPRODUCTDIMENSIONGROUPPRODUCT'. Scan count 2849, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'MARINVENTTABLE'. Scan count 0, logical reads 5885, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'ECORESSTORAGEDIMENSIONGROUPITEM'. Scan count 0, logical reads 5885, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'ECORESTRACKINGDIMENSIONGROUPITEM'. Scan count 0, logical reads 5885, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'INVENTITEMGROUPITEM'. Scan count 0, logical reads 5885, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'INVENTMODELGROUPITEM'. Scan count 0, logical reads 5885, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'WHSINVENTTABLE'. Scan count 2849, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'ECORESPRODUCT'. Scan count 0, logical reads 5885, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'INVENTTABLE'. Scan count 1, logical reads 554, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
(1 row(s) affected)
I thought I would take a look at the ECORESPRODUCTTRANSLATION table as it had the most reads. On that table are the following indexes already:
/****** Object: Index [I_6869PRODUCTLANGUAGEIDX] Script Date: 04/08/2014 15:56:37 ******/
CREATE UNIQUE CLUSTERED INDEX [I_6869PRODUCTLANGUAGEIDX] ON [dbo].[ECORESPRODUCTTRANSLATION]
(
[PARTITION] ASC,
[PRODUCT] ASC,
[LANGUAGEID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
/****** Object: Index [I_6869RECIDPRODUCTLANGUAGEID] Script Date: 04/08/2014 15:48:15 ******/
CREATE UNIQUE NONCLUSTERED INDEX [I_6869RECIDPRODUCTLANGUAGEID] ON [dbo].[ECORESPRODUCTTRANSLATION]
(
[PARTITION] ASC,
[RECID] ASC,
[PRODUCT] ASC,
[LANGUAGEID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ECORESPRODUCTTRANSLATION] ADD CONSTRAINT [I_6869RECID] PRIMARY KEY NONCLUSTERED
(
[RECID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
I had thought that if I create a new NC index like the following I would seen an improvement. My thinking being that the there would be less pages to navigate however it made no difference.
CREATE NONCLUSTERED INDEX [Test] ON [dbo].[ECORESPRODUCTTRANSLATION]
(
[PARTITION] ASC,
[PRODUCT] ASC,
[LANGUAGEID] ASC
)
INCLUDE (NAME,
RECVERSION,
RECID)
I then accidentally created an index as follows:
CREATE UNIQUE NONCLUSTERED INDEX [Test] ON [dbo].[ECORESPRODUCTTRANSLATION]
(
LANGUAGEID ASC,
PRODUCT ASC
)
INCLUDE (NAME,
RECVERSION,
RECID)
And I got 3k less logical reads for that table. Why is this more efficient? Is it to do with the clustered information being in the leaf level of the NC index already?
I have also attached the plans with and without the index for information.
Thanks
August 5, 2014 at 6:30 am
What's the definition of the table?
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability
August 5, 2014 at 7:10 am
Here you go
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ECORESPRODUCTTRANSLATION](
[DESCRIPTION] [nvarchar](1000) NOT NULL,
[NAME] [nvarchar](60) NOT NULL,
[PRODUCT] [bigint] NOT NULL,
[LANGUAGEID] [nvarchar](7) NOT NULL,
[RECVERSION] [int] NOT NULL,
[PARTITION] [bigint] NOT NULL,
[RECID] [bigint] NOT NULL,
[MODIFIEDBY] [nvarchar](8) NOT NULL,
CONSTRAINT [I_6869RECID] PRIMARY KEY NONCLUSTERED
(
[RECID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ECORESPRODUCTTRANSLATION] ADD DEFAULT ('') FOR [DESCRIPTION]
GO
ALTER TABLE [dbo].[ECORESPRODUCTTRANSLATION] ADD DEFAULT ('') FOR [NAME]
GO
ALTER TABLE [dbo].[ECORESPRODUCTTRANSLATION] ADD DEFAULT ((0)) FOR [PRODUCT]
GO
ALTER TABLE [dbo].[ECORESPRODUCTTRANSLATION] ADD DEFAULT ('') FOR [LANGUAGEID]
GO
ALTER TABLE [dbo].[ECORESPRODUCTTRANSLATION] ADD DEFAULT ((1)) FOR [RECVERSION]
GO
ALTER TABLE [dbo].[ECORESPRODUCTTRANSLATION] ADD DEFAULT ((5637144576.)) FOR [PARTITION]
GO
ALTER TABLE [dbo].[ECORESPRODUCTTRANSLATION] ADD DEFAULT ('?') FOR [MODIFIEDBY]
GO
ALTER TABLE [dbo].[ECORESPRODUCTTRANSLATION] WITH CHECK ADD CHECK (([RECID]<>(0)))
GO
August 5, 2014 at 8:51 am
The Non-clustered Index is performing a seek on LANGUAGEID and PRODUCT and using a predicate to filter on PARTITION.
The Clustered Index is performing a seek on LANGUAGEID, PRODUCT and PARTITION.
The non-clustered index is smaller so I would expect to see an improvement on logical reads.
<RelOp AvgRowSize="91" LogicalOp="Index Seek" EstimatedTotalSubtreeCost="0.0217425">
<SeekPredicates><Prefix ScanType="EQ">
<RangeColumns>
<ColumnReference Database="[AX2012_DEV]" Schema="[dbo]" Table="[ECORESPRODUCTTRANSLATION]" Alias="[T10]" Column="LANGUAGEID" />
<ColumnReference Database="[AX2012_DEV]" Schema="[dbo]" Table="[ECORESPRODUCTTRANSLATION]" Alias="[T10]" Column="PRODUCT" />
</RangeColumns>
<RangeExpressions>
<ScalarOperator ScalarString="N'en-gb'">
<ScalarOperator ScalarString="[ECORESPRODUCT].[RECID]">
<Identifier><ColumnReference Column="RECID" /></Identifier>
<Predicate>
<ScalarOperator ScalarString="[PARTITION]=(5637144576.)"><Compare CompareOp="EQ">
<RelOp AvgRowSize="83" LogicalOp="Clustered Index Seek" EstimatedTotalSubtreeCost="0.0228019">
<SeekPredicates><Prefix ScanType="EQ">
<RangeColumns>
<ColumnReference Database="[AX2012_DEV]" Schema="[dbo]" Table="[ECORESPRODUCTTRANSLATION]" Alias="[T10]" Column="PARTITION" />
<ColumnReference Database="[AX2012_DEV]" Schema="[dbo]" Table="[ECORESPRODUCTTRANSLATION]" Alias="[T10]" Column="PRODUCT" />
<ColumnReference Database="[AX2012_DEV]" Schema="[dbo]" Table="[ECORESPRODUCTTRANSLATION]" Alias="[T10]" Column="LANGUAGEID" />
</RangeColumns>
<RangeExpressions>
<ScalarOperator ScalarString="(5637144576.)">
<ScalarOperator ScalarString="[ECORESPRODUCT].[RECID]">
<Identifier><ColumnReference Column="RECID" /></Identifier>
<ScalarOperator ScalarString="N'en-gb'">
August 5, 2014 at 8:57 am
Try recreating the NC index with Partition as the third key column.
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability
August 6, 2014 at 1:10 am
Sean Pearce (8/5/2014)
The Non-clustered Index is performing a seek on LANGUAGEID and PRODUCT and using a predicate to filter on PARTITION.The Clustered Index is performing a seek on LANGUAGEID, PRODUCT and PARTITION.
The non-clustered index is smaller so I would expect to see an improvement on logical reads.
Hi Sean - so is it better to try to get indexes to use a predicate filter to reduce IO? (I assume this is because the clustered key is also the filter?) If that logic follows then if I create a NC index like this:
CREATE NONCLUSTERED INDEX [Test] ON [dbo].[ECORESPRODUCTTRANSLATION]
(
PRODUCT ASC
)
INCLUDE (NAME,
RECVERSION,
RECID)
Then wouldn't that be even better as I am trying to force a seek on PRODUCT and filter using PARTITION and LANGUAGEID? I have created this index and is had no improvement. Are you able to enlighten me as to how this works?
Gail - I also created the index with PARTITION as the 3rd key but again no improvement.
August 6, 2014 at 2:18 am
With so much repetition of columns in the output, isn't index refactoring a little "cart before the horse"? I'd recommend you eliminate duplicated data from the output before considering indexing. You will end up with way too many columns in your INCLUDEs.
SELECT
T1.ITEMID,
T1.ITEMTYPE,
T1.PURCHMODEL,
T1.HEIGHT,
T1.WIDTH,
T1.SALESMODEL,
T1.COSTGROUPID,
T1.REQGROUPID,
T1.EPCMANAGER,
T1.PRIMARYVENDORID,
T1.NETWEIGHT,
T1.DEPTH,
T1.UNITVOLUME,
T1.BOMUNITID,
T1.ITEMPRICETOLERANCEGROUPID,
T1.DENSITY,
T1.COSTMODEL,
T1.USEALTITEMID,
T1.ALTITEMID,
T1.MATCHINGPOLICY,
T1.INTRACODE,
T1.PRODFLUSHINGPRINCIP,
T1.MINIMUMPALLETQUANTITY,
T1.PBAITEMAUTOGENERATED,
T1.WMSARRIVALHANDLINGTIME,
T1.BOMMANUALRECEIPT,
T1.PHANTOM,
T1.INTRAUNIT,
T1.BOMLEVEL,
T1.BATCHNUMGROUPID,
T1.AUTOREPORTFINISHED,
T1.ORIGCOUNTRYREGIONID,
T1.STATISTICSFACTOR,
T1.ALTCONFIGID,
T1.STANDARDCONFIGID,
T1.PRODPOOLID,
T1.PROPERTYID,
T1.ABCTIEUP,
T1.ABCREVENUE,
T1.ABCVALUE,
T1.ABCCONTRIBUTIONMARGIN,
T1.COMMISSIONGROUPID,
T1.SALESPERCENTMARKUP,
T1.SALESCONTRIBUTIONRATIO,
T1.SALESPRICEMODELBASIC,
T1.NAMEALIAS,
T1.PRODGROUPID,
T1.PROJCATEGORYID,
T1.GROSSDEPTH,
T1.GROSSWIDTH,
T1.GROSSHEIGHT,
T1.STANDARDPALLETQUANTITY,
T1.QTYPERLAYER,
T1.SORTCODE,
T1.SERIALNUMGROUPID,
T1.ITEMBUYERGROUPID,
T1.TAXPACKAGINGQTY,
T1.WMSPALLETTYPEID,
T1.ORIGSTATEID,
T1.WMSPICKINGQTYTIME,
T1.TARAWEIGHT,
T1.PACKAGINGGROUPID,
T1.SCRAPVAR,
T1.SCRAPCONST,
T1.ITEMDIMCOSTPRICE,
T1.FORECASTDMPINCLUDE,
T1.PRODUCT,
T1.PALLETTAGGING,
T1.ITEMTAGGINGLEVEL,
T1.DEFAULTDIMENSION,
T1.BOMCALCGROUPID,
T1.PBAITEMCONFIGURABLE,
T1.PBAINVENTITEMGROUPID,
T1.PBAHIDEDIALOG,
T1.PBAHIDEAPPROVAL,
T1.PBAAUTOSTART,
T1.PBAMANDATORYCONFIG,
T1.PDSFREIGHTALLOCATIONGROUPID,
T1.PDSITEMREBATEGROUPID,
T1.PDSVENDORCHECKITEM,
T1.PMFPLANNINGITEMID,
T1.PMFPRODUCTTYPE,
T1.PMFYIELDPCT,
T1.BATCHMERGEDATECALCULATIONMETHOD,
T1.MODIFIEDDATETIME,
T1.DEL_MODIFIEDTIME,
T1.MODIFIEDBY,
T1.CREATEDDATETIME,
T1.DEL_CREATEDTIME,
T1.CREATEDBY,
T1.RECVERSION,
T1.PARTITION,
T1.RECID,
T2.UOMSEQGROUPID,
T2.MAXPICKQTY,
T2.ITEMID,
T2.RFDESCRIPTION1,
T2.RFDESCRIPTION2,
T2.PACKSIZECATEOGRYID,
T2.FILTERCODE,
T2.FILTERCODE2_,
T2.FILTERCODE3_,
T2.FILTERCODE4_,
T2.FILTERGROUP,
T2.FILTERGROUP2_,
T2.FILTERCHANGED,
T2.PRODQTY,
T2.PHYSDIMID,
T2.PACKAGECLASSID,
T2.PICKWCNEG,
T2.MODIFIEDDATETIME,
T2.MODIFIEDBY,
T2.RECVERSION,
T2.PARTITION,
T2.RECID,
T3.ITEMDATAAREAID,
T3.MODELGROUPID,
T3.ITEMID,
T3.MODELGROUPDATAAREAID,
T3.RECVERSION,
T3.PARTITION,
T3.RECID,
T4.ITEMID,
T4.ITEMDATAAREAID,
T4.ITEMGROUPID,
T4.ITEMGROUPDATAAREAID,
T4.RECVERSION,
T4.PARTITION,
T4.RECID,
T5.TRACKINGDIMENSIONGROUP,
T5.ITEMID,
T5.ITEMDATAAREAID,
T5.RECVERSION,
T5.PARTITION,
T5.RECID,
T6.STORAGEDIMENSIONGROUP,
T6.ITEMID,
T6.ITEMDATAAREAID,
T6.RECVERSION,
T6.PARTITION,
T6.RECID,
T7.PRODUCTMASTER,
T7.RETAITOTALWEIGHT,
T7.VARIANTCONFIGURATIONTECHNOLOGY,
T7.INSTANCERELATIONTYPE,
T7.DISPLAYPRODUCTNUMBER,
T7.SEARCHNAME,
T7.PRODUCTTYPE,
T7.MODIFIEDBY,
T7.RECVERSION,
T7.RELATIONTYPE,
T7.PARTITION,
T7.RECID,
T8.DEFAULTSITE,
T8.EQUIVALENTFACTOR,
T8.FOESEARCHTEXT,
T8.ITEMID,
T8.ITEMPRICEGROUPID,
T8.ITEMSTATUS,
T8.MASTERITEMID,
T8.PACKSIZE,
T8.PURCH_MANDATORYFIXEDASSET,
T8.PURCH_SPECIFICTEXT,
T8.MODIFIEDDATETIME,
T8.CREATEDDATETIME,
T8.RECVERSION,
T8.PARTITION,
T8.RECID,
T9.PRODUCTDIMENSIONGROUP, T9.RECVERSION, T9.RECID,
T10.NAME, T10.RECVERSION, T10.RECID,
T11.NAME, T11.RECVERSION, T11.RECID
-- 5518 rows in table
FROM INVENTTABLE T1
-- 0 rows in table
LEFT OUTER JOIN WHSINVENTTABLE T2
ON (((T2.PARTITION=5637144576)
AND (T2.DATAAREAID='abr'))
AND (T1.ITEMID=T2.ITEMID))
-- 5517 rows in table
LEFT OUTER JOIN INVENTMODELGROUPITEM T3
ON ((T3.PARTITION=5637144576)
AND ((T1.ITEMID=T3.ITEMID)
AND (T1.DATAAREAID=T3.ITEMDATAAREAID)))
-- 5517 rows in table
LEFT OUTER JOIN INVENTITEMGROUPITEM T4
ON ((T4.PARTITION=5637144576)
AND ((T1.ITEMID=T4.ITEMID)
AND (T1.DATAAREAID=T4.ITEMDATAAREAID)))
-- 5517 rows in table
LEFT OUTER JOIN ECORESTRACKINGDIMENSIONGROUPITEM T5
ON ((T5.PARTITION=5637144576)
AND ((T1.ITEMID=T5.ITEMID)
AND (T1.DATAAREAID=T5.ITEMDATAAREAID)))
-- 5517 rows in table
LEFT OUTER JOIN ECORESSTORAGEDIMENSIONGROUPITEM T6
ON ((T6.PARTITION=5637144576)
AND ((T1.ITEMID=T6.ITEMID)
AND (T1.DATAAREAID=T6.ITEMDATAAREAID)))
--CROSS JOIN ECORESPRODUCT T7
-- 2934 rows in table
INNER JOIN ECORESPRODUCT T7
ON T7.PARTITION=5637144576 AND T1.PRODUCT=T7.RECID
-- 5518 rows in table
LEFT OUTER JOIN MARINVENTTABLE T8
ON (((T8.PARTITION=5637144576)
AND (T8.DATAAREAID='abr'))
AND (T1.ITEMID=T8.ITEMID))
-- 0 rows in table
LEFT OUTER JOIN ECORESPRODUCTDIMENSIONGROUPPRODUCT T9
ON ((T9.PARTITION=5637144576)
AND (T7.RECID=T9.PRODUCT))
-- 10248 rows in table
LEFT OUTER JOIN ECORESPRODUCTTRANSLATION T10
ON ((T10.PARTITION=5637144576)
AND ((T10.LANGUAGEID='en-gb')
AND (T7.RECID=T10.PRODUCT)))
-- 0 rows in table
LEFT OUTER JOIN ECORESPRODUCTDIMENSIONGROUP T11
ON ((T11.PARTITION=5637144576)
AND (T9.PRODUCTDIMENSIONGROUP=T11.RECID))
WHERE T1.PARTITION=5637144576
AND T1.DATAAREAID='abr'
--AND ((T7.PARTITION=5637144576)
--AND (T1.PRODUCT=T7.RECID))
ORDER BY T1.ITEMID
OPTION(FAST 6)
For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden
August 6, 2014 at 3:16 am
Yes I have raised this but its Microsoft Dynamics AX and without a lot of customisation to the way AX uses X++ to generate the SQL then unfortunately its not possible, so I am where I am.
August 6, 2014 at 3:57 am
Kwisatz78 (8/6/2014)
Yes I have raised this but its Microsoft Dynamics AX and without a lot of customisation to the way AX uses X++ to generate the SQL then unfortunately its not possible, so I am where I am.
I feel your pain.
For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden
Viewing 9 posts - 1 through 8 (of 8 total)
You must be logged in to reply to this topic. Login to reply