I have below Store procedure, it's searching record from stkStonesDet(3 lakhs records), mstLists(Master Data Only, mostly 200 records in this table) table.
it's taking 40 sec. to execute sql, i want to search fast, please anyone help me out in this sql.
i have not mention all the fields in this query...
SELECT
stkStones.ID,
stkStonesDet.DiamondSKU,mstShape.Name AS ShapeName,
mstShape.SortOrder AS ShapeSortOrder,
FROM stkStones
INNER JOIN stkStonesDet on stkStones.ID = stkStonesDet.IDstkStones
LEFT OUTER JOIN mstLists as mstShape on mstShape.ID = stkStonesDet.IDmstListsShape
LEFT OUTER JOIN mstLists as mstClarity on mstClarity.ID = stkStonesDet.IDmstListsClarity
LEFT OUTER JOIN mstLists as mstColor on mstColor.ID = stkStonesDet.IDmstListsColor
LEFT OUTER JOIN mstLists as mstCuletCondition on mstCuletCondition.ID = stkStonesDet.IDmstListsCuletCondition
LEFT OUTER JOIN mstLists as mstCuletSize on mstCuletSize.ID = stkStonesDet.IDmstListsCuletSize
For that few number of records, the result should be returned quick unless you have no index defined on your table, the dataset is massive, or if your table has millions of rows.
SELECT
stkStones.ID,
stkStonesDet.DiamondSKU,mstShape.Name AS ShapeName,
mstShape.SortOrder AS ShapeSortOrder,
FROM stkStones
INNER JOIN stkStonesDet on stkStones.ID = stkStonesDet.IDstkStones
LEFT OUTER JOIN mstLists as mstShape on mstShape.ID = stkStonesDet.IDmstListsShape
LEFT OUTER JOIN mstLists as mstClarity on mstClarity.ID = stkStonesDet.IDmstListsClarity
LEFT OUTER JOIN mstLists as mstColor on mstColor.ID = stkStonesDet.IDmstListsColor
LEFT OUTER JOIN mstLists as mstCuletCondition on mstCuletCondition.ID = stkStonesDet.IDmstListsCuletCondition
LEFT OUTER JOIN mstLists as mstCuletSize on mstCuletSize.ID = stkStonesDet.IDmstListsCuletSize
Hi,
From your description, they left join same table, mstLists . You could change to AND instead of LEFT JOIN. Please check below query:
SELECT
stkStones.ID,
stkStonesDet.DiamondSKU,mstShape.Name AS ShapeName,
mstShape.SortOrder AS ShapeSortOrder,
FROM stkStones
INNER JOIN stkStonesDet on stkStones.ID = stkStonesDet.IDstkStones
LEFT OUTER JOIN mstLists as mstShape on mstShape.ID = stkStonesDet.IDmstListsShape
AND mstShape.ID = stkStonesDet.IDmstListsClarity
AND mstShape.ID = stkStonesDet.IDmstListsColor
AND mstShape.ID = stkStonesDet.IDmstListsCuletCondition
AND mstShape.ID = stkStonesDet.IDmstListsCuletSize
Thanks.
Please mark the replies as answers if they help or unmark if not.
Feedback to us
subhash.shel...
Contributor
2137 Points
487 Posts
SQL query taking long time to execution
Feb 23, 2012 02:28 PM|LINK
Hi,
I have below Store procedure, it's searching record from stkStonesDet(3 lakhs records), mstLists(Master Data Only, mostly 200 records in this table) table.
it's taking 40 sec. to execute sql, i want to search fast, please anyone help me out in this sql.
i have not mention all the fields in this query...
SELECT
stkStones.ID,
stkStonesDet.DiamondSKU,mstShape.Name AS ShapeName,
mstShape.SortOrder AS ShapeSortOrder,
FROM stkStones
INNER JOIN stkStonesDet on stkStones.ID = stkStonesDet.IDstkStones
LEFT OUTER JOIN mstLists as mstShape on mstShape.ID = stkStonesDet.IDmstListsShape
LEFT OUTER JOIN mstLists as mstClarity on mstClarity.ID = stkStonesDet.IDmstListsClarity
LEFT OUTER JOIN mstLists as mstColor on mstColor.ID = stkStonesDet.IDmstListsColor
LEFT OUTER JOIN mstLists as mstCuletCondition on mstCuletCondition.ID = stkStonesDet.IDmstListsCuletCondition
LEFT OUTER JOIN mstLists as mstCuletSize on mstCuletSize.ID = stkStonesDet.IDmstListsCuletSize
Thanks
Subhash
Subhash
Please, Mark as Answer if this reply helped you.
bbcompent1
All-Star
32978 Points
8502 Posts
Moderator
Re: SQL query taking long time to execution
Feb 23, 2012 03:25 PM|LINK
For that few number of records, the result should be returned quick unless you have no index defined on your table, the dataset is massive, or if your table has millions of rows.
ryanbesko
Contributor
3561 Points
619 Posts
Re: SQL query taking long time to execution
Feb 23, 2012 04:04 PM|LINK
Put indexes on these columns:
IDstkStones
IDmstListsShape
IDmstListsClarity
IDmstListsColor
IDmstListsCuletCondition
IDmstListsCuletSize
subhash.shel...
Contributor
2137 Points
487 Posts
Re: SQL query taking long time to execution
Feb 24, 2012 04:59 AM|LINK
Hi,
Thanks for reply...
did indexes on that column even doesn't make any diff.
Subhash
Please, Mark as Answer if this reply helped you.
Chen Yu - MS...
All-Star
21584 Points
2493 Posts
Microsoft
Re: SQL query taking long time to execution
Feb 28, 2012 08:58 AM|LINK
Hi,
From your description, they left join same table, mstLists . You could change to AND instead of LEFT JOIN. Please check below query:
SELECT stkStones.ID, stkStonesDet.DiamondSKU,mstShape.Name AS ShapeName, mstShape.SortOrder AS ShapeSortOrder, FROM stkStones INNER JOIN stkStonesDet on stkStones.ID = stkStonesDet.IDstkStones LEFT OUTER JOIN mstLists as mstShape on mstShape.ID = stkStonesDet.IDmstListsShape AND mstShape.ID = stkStonesDet.IDmstListsClarity AND mstShape.ID = stkStonesDet.IDmstListsColor AND mstShape.ID = stkStonesDet.IDmstListsCuletCondition AND mstShape.ID = stkStonesDet.IDmstListsCuletSizeThanks.
Feedback to us
Develop and promote your apps in Windows Store
subhash.shel...
Contributor
2137 Points
487 Posts
Re: SQL query taking long time to execution
Mar 01, 2012 12:57 AM|LINK
Hi,
it will not work dude....it will display null values of join tables. i have tried but it display null values of
Subhash
Please, Mark as Answer if this reply helped you.