Diagnosing performance issues with long running queries is challenging. Generally for troubleshooting a query performance, we look at the execution plan generated by the T-SQL query and then identify the expensive operators. However for a long running query, where we have to stop the T-SQL execution prior to its completion, there is no execution plan generated. Live Query Statistics in SQL Server 2016 comes to our rescue in such scenarios.
When a column is wrapped around in a function call in the WHERE clause, the query processing speed can be extremely low because of the potential resultant scan operation. We should avoid using functions on columns in predicate. Especially on large tables, it can create a noticeable performance overhead by preventing the Query Optimizer to use available indexes.
We bumped into a Performance issue last week for one of our web application in Production. After doing some research and looking at Logic Monitor reports for web servers and database servers, we figured out that the Deadlocks and Lock Timeouts in the Database have increased considerably.
Your application is bound to grow over a period of time. Sometimes it is critical to test your changes with a bigger workload than your current table size to identify any performance bottlenecks, well ahead of time. Leveraging automated tools to generate a workload for you to test your application makes your lives much easier.
Having an effective Database Indexing Strategy is a key to your application performance. When we think about optimizing SQL query performance, generally the first thing which comes to our mind are ‘Indexes’. And rightly so, because Indexes tremendously help in fetching your data faster from SQL Server.