August 8, 2020 at 3:10 am
Hi All,
I have some issue with a slow running query and im quite new to tuning and have no idea how to proceed with this. For some reason I cant attach the plan file with this post and hence sharing the drive link to the plan
https://drive.google.com/drive/folders/1zx-vhscuW1DcPNyIzJqak7hy0ufPwI9N?usp=sharing
After referring the internet, tried creating some nonclustered index and updated statistics but it didn't help out. Please help
Thanks in advance
NB
August 8, 2020 at 9:03 am
There isn't a simple answer to this one, but the first thing that sticks out is the excessive cardinality in thee scan and seek operators, hundreds of millions of rows. Best guess is to try to limit those first before looking at anything else.
π
A query such as this one, with roughly 20 objects, can easily take days of work to optimise, my advice is to go for the greatest costs first and avoid being sidetracked on issues that may not be important in the grand scheme of things.
August 8, 2020 at 7:28 pm
Hi Erikur,
The view is actually a datasource for an SSRS report and it has the date from and to filters. So the view is supposed to bring back all the records and then filtered before rendering SSRS report.
The greatest cost I can see is for a sort operation( please correct me if I'm wrong), can you please advise how to proceed.
Thanks
August 9, 2020 at 5:18 pm
For me, the link provided by the OP doesn't point to an SQLPlan file.Β It points to a file but SQL Server doesn't recognize it as an SQLPlan.
Eirikur, what did you use to interrogate the file?
--Jeff Moden
Change is inevitable... Change for the better is not.
August 9, 2020 at 11:28 pm
Hi Jeff,
Itβs a SQL Sentry plan explorer file.
Thanks
NB
August 10, 2020 at 5:29 am
For me, the link provided by the OP doesn't point to an SQLPlan file.Β It points to a file but SQL Server doesn't recognize it as an SQLPlan.
Eirikur, what did you use to interrogate the file?
The file is from SentryOne Plan Explorer, a nice free tool for examining execution plans.
π
August 10, 2020 at 5:36 am
Hi Erikur,
The view is actually a datasource for an SSRS report and it has the date from and to filters. So the view is supposed to bring back all the records and then filtered before rendering SSRS report.
The greatest cost I can see is for a sort operation( please correct me if I'm wrong), can you please advise how to proceed.
Thanks
The cost of the sort operators is directly related to the number of rows (cardinality) they have to process.
π
I've seen several examples like this one, managed once to get a query from 17 hours down to a few seconds by limiting the cardinality and preventing it from parallel execution.
August 10, 2020 at 7:08 am
Hi Eric,
Can you advise on this please,
say as in this case the date filter is only passed from the SSRS report, how can I redesign the whole thing. consider that the source for the report is a single query.
And sorry for not the actual plan as sometimes the business feel insecure when posting the actual tables and one good thing with plan explorer is we can obfuscate the objects. Hope you understand,
Thanks
NB
August 10, 2020 at 7:31 am
Hi Eric,
Can you advise on this please,
say as in this case the date filter is only passed from the SSRS report, how can I redesign the whole thing. consider that the source for the report is a single query.
And sorry for not the actual plan as sometimes the business feel insecure when posting the actual tables and one good thing with plan explorer is we can obfuscate the objects. Hope you understand,
Thanks
NB
Understood but the problem is that I can neither retrieve the full SQL query nor the code for underlying objects (view, functions etc.)
π
The problem with obfuscated plans is that it severely limits ones ability to assist with a problem. Suggest you consult the business on whether you can either post the full query or the actual execution plan.
August 10, 2020 at 7:49 am
having a sqlplan won't give you the sql query (the one that matters) on this case as a view is being used.
main query is a view - I would bet it is a view with selects from other (multiple) views.
a few UDF, a few KeyLookup, 2 Xpath/Xquery (slow in nature) and a few table/index scans, including one index scan with 750Million rows.
without the full definition of the underlying views and functions it will be very hard to give any help at all. I know some people are afraid to show their code but with very few exceptions no code like this is really something that needs to be kept confidential.
this is one of those cases where I would try and rewrite this to be a stored proc returning a recordset which SSRS would happily use.
sql plan attached as a zip file - can someone on admin change forum definition to allow .txt/.sqlplan files
August 10, 2020 at 1:13 pm
Jeff Moden wrote:For me, the link provided by the OP doesn't point to an SQLPlan file.Β It points to a file but SQL Server doesn't recognize it as an SQLPlan.
Eirikur, what did you use to interrogate the file?
The file is from SentryOne Plan Explorer, a nice free tool for examining execution plans.
π
Thanks, Eirikur.Β My ignorance there is from the fact that I don't use the tool at all because I don't want to get used to something that a lot of places I occasionally do work for don't have and won't allow the installation of.
--Jeff Moden
Change is inevitable... Change for the better is not.
August 10, 2020 at 1:47 pm
having a sqlplan won't give you the sql query (the one that matters) on this case as a view is being used.
main query is a view - I would bet it is a view with selects from other (multiple) views.
a few UDF, a few KeyLookup, 2 Xpath/Xquery (slow in nature) and a few table/index scans, including one index scan with 750Million rows.
without the full definition of the underlying views and functions it will be very hard to give any help at all. I know some people are afraid to show their code but with very few exceptions no code like this is really something that needs to be kept confidential.
this is one of those cases where I would try and rewrite this to be a stored proc returning a recordset which SSRS would happily use.
sql plan attached as a zip file - can someone on admin change forum definition to allow .txt/.sqlplan files
Thanks for the conversion to a native SQLPlan.Β There's also a huge number of single row estimates (Object 16 has a 1.4 million row seek joined with Object 17, which has a 73 million row scan for an output of a little of 100K rows) and another set of joins that return 0 rows, etc, etc.Β I agree that someone needs to take this bad boy apart and do a rewrite, possibly using "Divide'n'Conquer" methods like storing an interim step or two in a Temp Table or two to simplify the joins.
Because of the really poor estimates, I also wonder when the last time they rebuilt stats was.
--Jeff Moden
Change is inevitable... Change for the better is not.
August 10, 2020 at 7:44 pm
Could you post the plan here: https://www.brentozar.com/pastetheplan/
Jeffrey Williams
βWe are all faced with a series of great opportunities brilliantly disguised as impossible situations.β
β Charles R. Swindoll
How to post questions to get better answers faster
Managing Transaction Logs
August 10, 2020 at 7:58 pm
I see a bunch of table scans - which seems to indicate based on the estimates - a table variable or a heap (which should still have some statistics).Β The table scan thinks there is 1 row to be returned...
I also noticed that Object11.Index5 is referenced multiple times with a clustered index scan - 149786 rows.
Object15.Index11 is referenced twice in the same portion, once for all 189423 rows and again in the FOR XML part.Β There are other large clustered index scans and index scans and at least one more FOR XML process (guessing these are returning multiple values delimited by some character in a single column).
I don't think we can get any better analysis without seeing the actual query.
Jeffrey Williams
βWe are all faced with a series of great opportunities brilliantly disguised as impossible situations.β
β Charles R. Swindoll
How to post questions to get better answers faster
Managing Transaction Logs
Viewing 15 posts - 1 through 15 (of 23 total)
You must be logged in to reply to this topic. Login to reply