SlideShare a Scribd company logo
SQL Query Performance Analysis
INDEX
• Query Optimizer

• Addhoc queries

• Execution Plan

• Statistics Analysis
Query Optimizer
The query optimizer in SQL Server is cost-based. It includes:

1. Cost for using different resources (CPU and IO)
2. Total execution time

It determines the cost by using:

• Cardinality: The total number of rows processed at each level
  of a query plan with the help of histograms , predicates and
  constraint

• Cost model of the algorithm: To perform various operations
  like sorting, searching, comparisons etc.
Addhoc queries
Any non-Parameterized quires are called addhoc queries. For
example :

SELECT MsgID, Severity FROM SqlMessage WHERE MsgID = 100

In sql server if we execute a sql query it goes through two steps
just like any other programming languages:

• 1. Compilation
• 2. Execution
Properties of addhoc query
• Case sensitive
• Space sensitive
• Parameter sensitive

Sql severs treats two same sql query of different parameters
as different sql statements. For example:

• SELECT MsgID, Severity FROM SqlMessage WHERE MsgID = 1
• SELECT MsgID, Severity FROM SqlMessage WHERE MsgID = 2
Effect of faulty C# code
• Sql server took extra n * (Compilation time) ms to display
  records

• Extra time to insert records in cached plans.

• Sql server has to frequently fire a job to delete the cached
  plan since it will reach the max limit very soon.

• It will not only decrease the performance of this sql query but
  all sql queries of other application since this faulty code will
  force to delete cached query plans of other sql statement.
Prepared queries
Example:

(@Msgid int)SELECT MsgID, Severity FROM SqlMessage WHERE
  MsgID = @Msgid

• It is not case, space and parameter sensitive and it is our goal.

Stored procedure :

• It is precompiled sql queries which follow a common
  execution plan.
Execution Plan
• What is an index in sql server?

  Index is a way to organize data in a table to make some
  operations like searching, sorting, grouping etc faster for
  particular key. We need indexing when cached query plan
  has:

• WHERE , HAVING, ON clause (That is searching)
• ORDER BY clause (That is sorting)
• GROUP BY clause (This is grouping) etc.
Table scan and Index scan:
SELECT * FROM Student WHERE RollNo = 111


Time complexity of table scan is : O(n)
RollNo          Name              Country     Age
101             Greg              UK          23
102             Sachin            India       21
103             Akaram            Pakistan    22
107             Miyabi            China       18
108             Marry             Russia      27
109             Scott             USA         31
110             Benazir           Banglades   17
111             Miyabi            Japan       24
112             Rahul             India       27
113             Nicolus           France      19
Clustered index
• When we create a clustered index on any table physical
  organization of table is changed in B- Tree.

• Leaf node of clustered index always keep actual data.

• If we create table with primary key, sql server automatically
  creates clustered index on that table .

• If clustered index has more than one partition then each
  partition has a B-tree.
Index seek
Time complexity of index seek is: O(log n)
Types of scanning
• Table scan: It is very slow scanning process and it is used only
  if table has not any clustered index.

• Index scan: It is also slow scanning process. It is used when
  table has clustered index and either in WHERE clause non-key
  columns are present or query has not been covered (will
  discuss later) or both.

• Index Seek: It is very fast. Our goal is to achieve this.

• If a table has only five records which scanning will you follow?
Terms of execution plan
• Predicate: It is condition in WHERE clause which is either non-
  key column or column which has not been covered.

• Seek Predicate: It is condition in WHERE clause which is either
  key column or fully covered.

• Object: It is name of source from where it getting the data. It
  can be heap, clustered index or non-clustered index.

• Output list: It is name of the columns which are getting from
  the object.
Non-clustered index
• It is logical organization of data of table. A non-clustered index
  can be of two types.

1. Based on heap
2. Based on clustered index.

• If table has clustered index then leaf node of non-clustered
  index keeps the key columns of clustered index.

• In heap leaf node of non-clustered index keeps RID.
Based on clustered Index
Based on heap
Covering of queries
• We can specify maximum 16 column names.

•   Sum of size of the columns cannot be more than 900 bytes.

• All columns must belong to same table.

• Data     type    of    columns      cannot     be     ntext,  text,
  varchar (max), nvarchar (max), varbinary (max), xml, or image

• It cannot be non-deterministic computed column.
Statistics Analysis
• The query optimizer uses statistics to create query plans that
  improve query performance.

• A correct or updated statistics will lead to high-quality query plan.

• Auto create and updates applies strictly to single-column statistics.

• The query optimizer determines when statistics might be out-of-
  date by counting the number of data modifications since the last
  statistics update and comparing the number of modifications to a
  threshold.
To improve cardinality
• If possible, simplify expressions with constants in them.

• If there is cross relation between column use computed
  column.

• Rewriting the query to use a parameter instead of a local
  variable.

• Avoid changing the parameter value within the stored
  procedure before using it in the query.
Goal
• Should we use sub query or inner join?
• Should we use temp table or table variable?

Other tools:

•   Sql query profiler
•   Database Tuning Advisor
•   Resource Governor
THANK YOU

More Related Content

PPTX
Sql query performance analysis
PPT
Tunning overview
PPTX
MySQL Performance Tips & Best Practices
PPTX
02 database oprimization - improving sql performance - ent-db
PPTX
Stored procedure tuning and optimization t sql
PPTX
Top 10 tips for Oracle performance (Updated April 2015)
PPTX
Sql server introduction
PPTX
P9 speed of-light faceted search via oracle in-memory option by alexander tok...
Sql query performance analysis
Tunning overview
MySQL Performance Tips & Best Practices
02 database oprimization - improving sql performance - ent-db
Stored procedure tuning and optimization t sql
Top 10 tips for Oracle performance (Updated April 2015)
Sql server introduction
P9 speed of-light faceted search via oracle in-memory option by alexander tok...

What's hot (20)

PPTX
Row level security in enterprise applications
PPTX
Query Optimization in SQL Server
PDF
Efficient Scalable Search in a Multi-Tenant Environment: Presented by Harry H...
PDF
Unit Testing SQL Server
PPTX
Executing Queries on a Sharded Database
PDF
How to Fine-Tune Performance Using Amazon Redshift
PPTX
Elastic Migration 2.x to 6.x By Pankaj Gajjar
PPTX
Maryna Popova "Deep dive AWS Redshift"
PPT
Elk presentation1#3
PPTX
Indexing the MySQL Index: Key to performance tuning
PPTX
Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)
PDF
Cost-based Query Optimization
PPTX
Incorta spark integration
PDF
Improved Search With Lucene 4.0 - NOVA Lucene/Solr Meetup
PDF
Three steps to untangle data traffic jams
PPTX
Inmemory BI based on opensource stack
PPTX
Database Performance Tuning
PDF
PandasUDFs: One Weird Trick to Scaled Ensembles
PDF
Search at Twitter
PPT
SQL on Big Data using Optiq
Row level security in enterprise applications
Query Optimization in SQL Server
Efficient Scalable Search in a Multi-Tenant Environment: Presented by Harry H...
Unit Testing SQL Server
Executing Queries on a Sharded Database
How to Fine-Tune Performance Using Amazon Redshift
Elastic Migration 2.x to 6.x By Pankaj Gajjar
Maryna Popova "Deep dive AWS Redshift"
Elk presentation1#3
Indexing the MySQL Index: Key to performance tuning
Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)
Cost-based Query Optimization
Incorta spark integration
Improved Search With Lucene 4.0 - NOVA Lucene/Solr Meetup
Three steps to untangle data traffic jams
Inmemory BI based on opensource stack
Database Performance Tuning
PandasUDFs: One Weird Trick to Scaled Ensembles
Search at Twitter
SQL on Big Data using Optiq
Ad

Similar to Sql query performance analysis (20)

PPTX
Query parameterization
PPTX
Index
PPTX
Index_2
PDF
Sql Server Query Parameterization
PPTX
Index the obvious and not so obvious
PPTX
Sql performance tuning
PDF
Statistics and Indexes Internals
PPTX
Denis Reznik "Оптимизация запроса. Не знаешь что делать? Делай то, что знаешь"
PPTX
Database Performance
PPTX
dotnetMALAGA - Sql query tuning guidelines
PPTX
Statistics
PPT
Indexing Strategies
PDF
Brad McGehee Intepreting Execution Plans Mar09
PDF
Brad McGehee Intepreting Execution Plans Mar09
PPTX
Geek Sync | Understand Indexes to Write Better Queries
PDF
Enterprise dbs and Database indexing
PPTX
PDF
Microsoft SQL Server Filtered Indexes & Sparse Columns Feb 2011
PPTX
SQL Server 2012 Best Practices
PDF
Practical SQL query monitoring and optimization
Query parameterization
Index
Index_2
Sql Server Query Parameterization
Index the obvious and not so obvious
Sql performance tuning
Statistics and Indexes Internals
Denis Reznik "Оптимизация запроса. Не знаешь что делать? Делай то, что знаешь"
Database Performance
dotnetMALAGA - Sql query tuning guidelines
Statistics
Indexing Strategies
Brad McGehee Intepreting Execution Plans Mar09
Brad McGehee Intepreting Execution Plans Mar09
Geek Sync | Understand Indexes to Write Better Queries
Enterprise dbs and Database indexing
Microsoft SQL Server Filtered Indexes & Sparse Columns Feb 2011
SQL Server 2012 Best Practices
Practical SQL query monitoring and optimization
Ad

More from Riteshkiit (9)

PPTX
Backup and restore
PPTX
Database index
PPTX
Sql server introduction fundamental
PPTX
Order by and join
PPTX
Database design
PPTX
Addhoc query
PPTX
Sql server JOIN
PPTX
Sql server 2
PPTX
Topics
Backup and restore
Database index
Sql server introduction fundamental
Order by and join
Database design
Addhoc query
Sql server JOIN
Sql server 2
Topics

Recently uploaded (20)

PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PPTX
Cell Types and Its function , kingdom of life
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
Microbial disease of the cardiovascular and lymphatic systems
PDF
Pre independence Education in Inndia.pdf
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PDF
RMMM.pdf make it easy to upload and study
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PPTX
PPH.pptx obstetrics and gynecology in nursing
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
102 student loan defaulters named and shamed – Is someone you know on the list?
Cell Types and Its function , kingdom of life
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
FourierSeries-QuestionsWithAnswers(Part-A).pdf
O5-L3 Freight Transport Ops (International) V1.pdf
VCE English Exam - Section C Student Revision Booklet
2.FourierTransform-ShortQuestionswithAnswers.pdf
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Renaissance Architecture: A Journey from Faith to Humanism
Microbial disease of the cardiovascular and lymphatic systems
Pre independence Education in Inndia.pdf
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
RMMM.pdf make it easy to upload and study
O7-L3 Supply Chain Operations - ICLT Program
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PPH.pptx obstetrics and gynecology in nursing
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
Module 4: Burden of Disease Tutorial Slides S2 2025

Sql query performance analysis

  • 2. INDEX • Query Optimizer • Addhoc queries • Execution Plan • Statistics Analysis
  • 3. Query Optimizer The query optimizer in SQL Server is cost-based. It includes: 1. Cost for using different resources (CPU and IO) 2. Total execution time It determines the cost by using: • Cardinality: The total number of rows processed at each level of a query plan with the help of histograms , predicates and constraint • Cost model of the algorithm: To perform various operations like sorting, searching, comparisons etc.
  • 4. Addhoc queries Any non-Parameterized quires are called addhoc queries. For example : SELECT MsgID, Severity FROM SqlMessage WHERE MsgID = 100 In sql server if we execute a sql query it goes through two steps just like any other programming languages: • 1. Compilation • 2. Execution
  • 5. Properties of addhoc query • Case sensitive • Space sensitive • Parameter sensitive Sql severs treats two same sql query of different parameters as different sql statements. For example: • SELECT MsgID, Severity FROM SqlMessage WHERE MsgID = 1 • SELECT MsgID, Severity FROM SqlMessage WHERE MsgID = 2
  • 6. Effect of faulty C# code • Sql server took extra n * (Compilation time) ms to display records • Extra time to insert records in cached plans. • Sql server has to frequently fire a job to delete the cached plan since it will reach the max limit very soon. • It will not only decrease the performance of this sql query but all sql queries of other application since this faulty code will force to delete cached query plans of other sql statement.
  • 7. Prepared queries Example: (@Msgid int)SELECT MsgID, Severity FROM SqlMessage WHERE MsgID = @Msgid • It is not case, space and parameter sensitive and it is our goal. Stored procedure : • It is precompiled sql queries which follow a common execution plan.
  • 8. Execution Plan • What is an index in sql server? Index is a way to organize data in a table to make some operations like searching, sorting, grouping etc faster for particular key. We need indexing when cached query plan has: • WHERE , HAVING, ON clause (That is searching) • ORDER BY clause (That is sorting) • GROUP BY clause (This is grouping) etc.
  • 9. Table scan and Index scan: SELECT * FROM Student WHERE RollNo = 111 Time complexity of table scan is : O(n) RollNo Name Country Age 101 Greg UK 23 102 Sachin India 21 103 Akaram Pakistan 22 107 Miyabi China 18 108 Marry Russia 27 109 Scott USA 31 110 Benazir Banglades 17 111 Miyabi Japan 24 112 Rahul India 27 113 Nicolus France 19
  • 10. Clustered index • When we create a clustered index on any table physical organization of table is changed in B- Tree. • Leaf node of clustered index always keep actual data. • If we create table with primary key, sql server automatically creates clustered index on that table . • If clustered index has more than one partition then each partition has a B-tree.
  • 11. Index seek Time complexity of index seek is: O(log n)
  • 12. Types of scanning • Table scan: It is very slow scanning process and it is used only if table has not any clustered index. • Index scan: It is also slow scanning process. It is used when table has clustered index and either in WHERE clause non-key columns are present or query has not been covered (will discuss later) or both. • Index Seek: It is very fast. Our goal is to achieve this. • If a table has only five records which scanning will you follow?
  • 13. Terms of execution plan • Predicate: It is condition in WHERE clause which is either non- key column or column which has not been covered. • Seek Predicate: It is condition in WHERE clause which is either key column or fully covered. • Object: It is name of source from where it getting the data. It can be heap, clustered index or non-clustered index. • Output list: It is name of the columns which are getting from the object.
  • 14. Non-clustered index • It is logical organization of data of table. A non-clustered index can be of two types. 1. Based on heap 2. Based on clustered index. • If table has clustered index then leaf node of non-clustered index keeps the key columns of clustered index. • In heap leaf node of non-clustered index keeps RID.
  • 17. Covering of queries • We can specify maximum 16 column names. • Sum of size of the columns cannot be more than 900 bytes. • All columns must belong to same table. • Data type of columns cannot be ntext, text, varchar (max), nvarchar (max), varbinary (max), xml, or image • It cannot be non-deterministic computed column.
  • 18. Statistics Analysis • The query optimizer uses statistics to create query plans that improve query performance. • A correct or updated statistics will lead to high-quality query plan. • Auto create and updates applies strictly to single-column statistics. • The query optimizer determines when statistics might be out-of- date by counting the number of data modifications since the last statistics update and comparing the number of modifications to a threshold.
  • 19. To improve cardinality • If possible, simplify expressions with constants in them. • If there is cross relation between column use computed column. • Rewriting the query to use a parameter instead of a local variable. • Avoid changing the parameter value within the stored procedure before using it in the query.
  • 20. Goal • Should we use sub query or inner join? • Should we use temp table or table variable? Other tools: • Sql query profiler • Database Tuning Advisor • Resource Governor