SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Sql Server Query
Parameterization
Query Tuning
INDEX
   Adhoc Query
   Predicates Order
   Execution Plan
   Query Optimizer
   Parameter Sniffing
   Indexes
   Statistics
   Database Engine Tuning Advisor
Adhoc Query
   Any non-Parameterized queries 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:

   Compilation
   Execution
Properties Of Addhoc
Queries
   Case sensitive
   Space sensitive
   Parameter sensitive

   Sql server treats two same sql queries of different
    parameters as a two 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 has 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 statements.
Predicates Order
   Does order of predicates in WHERE clause
    matters?

   WHERE vcLanguage = 'English' AND ntAge = 12


   WHERE ntAge = 12 AND vcLanguage = 'English'
Execution Plan
Query Optimizer
Query Optimizer
The query optimizer in SQL Server is cost-based. It includes:

   Cost for using different resources (CPU and IO)
   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.
Parameter Sniffing
   Sql server generates execution paln according
    to the first parameter
   This execution plan may bad for other
    parameters.

Solution:

   Create multiples stored procedures.
   Use optimizer for query hints.
What Is An Index ?
   Index is a way to organize data to make
    searching, sorting and grouping fasters
   we need indexing when :

   WHERE, ON, HAVING clause (Searching)
   ORDER BY clause (Sorting)
   GROUP BY clause (Grouping) etc.
Table 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
Types Of Index
   Table without any index is called Heap

   There are two type of index:

   Clustered index
   Non-Clustered index
Clustered Index
   When we create a clustered index on any
    table physical organization of table is changed.
   Now data of table is stored as a balanced
    tree(B tree).

CREATE UNIQUE [CLUSTERED] INDEX <Name>
    ON <ObjectName>(
    <ColumnName> [ASC | DESC ] [ ,...n ]
)
Types Of Scanning

   Table scan: It is very slow can and it is used only if table
    has not any clustered index.

   Index scan: It is also slow scan. 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.
Clustered Index
    If we create table with primary key, sql server
    automatically creates clustered index on that
    table

   A table can have only one clustered index .

   Physical order of rows of table is same as
    logical order of key columns of clustered
    index.
Terms Of Execution Plan

   Predicate: It is condition in WHERE clause which is
    either non-key column or column which has not been
    covered.

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

   Output list: It is name of the columns which is getting
    from object.

   Seek Predicate: It is condition in WHERE clause which is
    either key column or fully covered.
Non-Clustered Index
   It is logical organization of data of table. A non-clustered
    index can be of two types.

    Heap
    Based on clustered index.

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

   If the table has not any clustered index then leaf node of
    non-clustered index keeps RID which unique of each row
    of table.
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 statistics will lead to high-quality query plan.

   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.
Auto Create Statistics
   Default setting of auto create statistics is ON.

   It creates when:
   Clustered and non clustered Index is created
   Select query is executed.


   Auto create and updates applies strictly to
    single-column statistics.
Why Query 2 Is Performing
Better
   If we perform following operations on field of
    any table in query predicate:

   Using any system function or user defined
    function
   Scalar operation like addition, multiplication
    etc.
   Type casting

   In this situation sql server query optimizer is
    not able to estimate correct cardinality using
    statistics.
To Improve Cardinality
   If possible, simplify expressions with constants in them.
   If possible, don't perform any operation on the any field
    of a table in WHERE Clause, ON Clause, HAVING
    Clause

   Don't use local variables in WHERE Clause, ON
    Clause, HAVING Clause.

   If there is any cross relationship among fields or there is
    a complex expression in a field in a query predicates, it
    is better to create a computed column and then create a
    non-clustered index on it.
To Improve Cardinality
   If possible, don't update the value of parameters of a
    function or stored procedure before using
    in sql statement
   Use OPTIMIZE FOR clause when you want to optimize
    a sql query on the basis of specific parameter value.
   If you want to update the value parameter of a stored
    procedure or a function create a similar procedure or
    function and execute it form base procedure or function
    by passing the updated value as a parameter.
   Create user defined multi column statistics if query
    predicates have more than one fields of a table.
SQL Server Tools

   Sql query profiler
   Database Tuning Advisor
   Client Statistics
   Resource Governor
   Data Collections
THANK YOU

Weitere ähnliche Inhalte

Was ist angesagt?

PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...
PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...
PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...Dave Stokes
 
Confoo 2021 - MySQL Indexes & Histograms
Confoo 2021 - MySQL Indexes & HistogramsConfoo 2021 - MySQL Indexes & Histograms
Confoo 2021 - MySQL Indexes & HistogramsDave Stokes
 
MySQL Query And Index Tuning
MySQL Query And Index TuningMySQL Query And Index Tuning
MySQL Query And Index TuningManikanda kumar
 
Oracle basic queries
Oracle basic queriesOracle basic queries
Oracle basic queriesPRAKHAR JHA
 
Oracle Course
Oracle CourseOracle Course
Oracle Courserspaike
 
Synapseindia dot net development chapter 8 asp dot net
Synapseindia dot net development  chapter 8 asp dot netSynapseindia dot net development  chapter 8 asp dot net
Synapseindia dot net development chapter 8 asp dot netSynapseindiappsdevelopment
 
Oracle foreign key missing index - a single index can boost performance
Oracle foreign key missing index - a single index can boost performanceOracle foreign key missing index - a single index can boost performance
Oracle foreign key missing index - a single index can boost performanceCarlos Oliveira
 
MS SQL SERVER: Programming sql server data mining
MS SQL SERVER: Programming sql server data miningMS SQL SERVER: Programming sql server data mining
MS SQL SERVER: Programming sql server data miningDataminingTools Inc
 
cPanel now supports MySQL 8.0 - My Top Seven Features
cPanel now supports MySQL 8.0 - My Top Seven FeaturescPanel now supports MySQL 8.0 - My Top Seven Features
cPanel now supports MySQL 8.0 - My Top Seven FeaturesDave Stokes
 
Optimizer overviewoow2014
Optimizer overviewoow2014Optimizer overviewoow2014
Optimizer overviewoow2014Mysql User Camp
 
Dutch PHP Conference 2021 - MySQL Indexes and Histograms
Dutch PHP Conference 2021 - MySQL Indexes and HistogramsDutch PHP Conference 2021 - MySQL Indexes and Histograms
Dutch PHP Conference 2021 - MySQL Indexes and HistogramsDave Stokes
 
Optimizing queries MySQL
Optimizing queries MySQLOptimizing queries MySQL
Optimizing queries MySQLGeorgi Sotirov
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursorsinfo_zybotech
 
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZEMySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZENorvald Ryeng
 

Was ist angesagt? (20)

PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...
PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...
PHP UK 2020 Tutorial: MySQL Indexes, Histograms And other ways To Speed Up Yo...
 
Confoo 2021 - MySQL Indexes & Histograms
Confoo 2021 - MySQL Indexes & HistogramsConfoo 2021 - MySQL Indexes & Histograms
Confoo 2021 - MySQL Indexes & Histograms
 
MySQL Query And Index Tuning
MySQL Query And Index TuningMySQL Query And Index Tuning
MySQL Query And Index Tuning
 
Oracle basic queries
Oracle basic queriesOracle basic queries
Oracle basic queries
 
Oracle Course
Oracle CourseOracle Course
Oracle Course
 
Using T-SQL
Using T-SQL Using T-SQL
Using T-SQL
 
Synapseindia dot net development chapter 8 asp dot net
Synapseindia dot net development  chapter 8 asp dot netSynapseindia dot net development  chapter 8 asp dot net
Synapseindia dot net development chapter 8 asp dot net
 
Oracle foreign key missing index - a single index can boost performance
Oracle foreign key missing index - a single index can boost performanceOracle foreign key missing index - a single index can boost performance
Oracle foreign key missing index - a single index can boost performance
 
Oracle SQL Basics
Oracle SQL BasicsOracle SQL Basics
Oracle SQL Basics
 
Sql killedserver
Sql killedserverSql killedserver
Sql killedserver
 
Chapter 5 transactions and dcl statements
Chapter 5  transactions and dcl statementsChapter 5  transactions and dcl statements
Chapter 5 transactions and dcl statements
 
MS SQL SERVER: Programming sql server data mining
MS SQL SERVER: Programming sql server data miningMS SQL SERVER: Programming sql server data mining
MS SQL SERVER: Programming sql server data mining
 
cPanel now supports MySQL 8.0 - My Top Seven Features
cPanel now supports MySQL 8.0 - My Top Seven FeaturescPanel now supports MySQL 8.0 - My Top Seven Features
cPanel now supports MySQL 8.0 - My Top Seven Features
 
Ms sql-server
Ms sql-serverMs sql-server
Ms sql-server
 
Optimizer overviewoow2014
Optimizer overviewoow2014Optimizer overviewoow2014
Optimizer overviewoow2014
 
Chapter 3 stored procedures
Chapter 3 stored proceduresChapter 3 stored procedures
Chapter 3 stored procedures
 
Dutch PHP Conference 2021 - MySQL Indexes and Histograms
Dutch PHP Conference 2021 - MySQL Indexes and HistogramsDutch PHP Conference 2021 - MySQL Indexes and Histograms
Dutch PHP Conference 2021 - MySQL Indexes and Histograms
 
Optimizing queries MySQL
Optimizing queries MySQLOptimizing queries MySQL
Optimizing queries MySQL
 
Accessing data with android cursors
Accessing data with android cursorsAccessing data with android cursors
Accessing data with android cursors
 
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZEMySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
 

Andere mochten auch

You are all dead to me
You are all dead to meYou are all dead to me
You are all dead to mezedgrangerson
 
Estudio benchmark publicidad digital mayor rendimiento por media mind
Estudio benchmark publicidad digital mayor rendimiento por media mindEstudio benchmark publicidad digital mayor rendimiento por media mind
Estudio benchmark publicidad digital mayor rendimiento por media mindComercio Electronico
 
Sql query performance analysis
Sql query performance analysisSql query performance analysis
Sql query performance analysisRiteshkiit
 
Google Analytics Bootcamp Bogota Junio 28 2012 Dia 4
Google Analytics Bootcamp Bogota Junio 28 2012 Dia 4Google Analytics Bootcamp Bogota Junio 28 2012 Dia 4
Google Analytics Bootcamp Bogota Junio 28 2012 Dia 4Comercio Electronico
 
Sql server introduction fundamental
Sql server introduction fundamentalSql server introduction fundamental
Sql server introduction fundamentalRiteshkiit
 
Reporte Cámara Colombiana de Comercio Electrónico Retail, Banking y Travel
Reporte Cámara Colombiana de Comercio Electrónico Retail, Banking y TravelReporte Cámara Colombiana de Comercio Electrónico Retail, Banking y Travel
Reporte Cámara Colombiana de Comercio Electrónico Retail, Banking y TravelComercio Electronico
 

Andere mochten auch (8)

You are all dead to me
You are all dead to meYou are all dead to me
You are all dead to me
 
Estudio benchmark publicidad digital mayor rendimiento por media mind
Estudio benchmark publicidad digital mayor rendimiento por media mindEstudio benchmark publicidad digital mayor rendimiento por media mind
Estudio benchmark publicidad digital mayor rendimiento por media mind
 
E government 2012 Colombia
E government 2012 ColombiaE government 2012 Colombia
E government 2012 Colombia
 
Sql query performance analysis
Sql query performance analysisSql query performance analysis
Sql query performance analysis
 
Google Analytics Bootcamp Bogota Junio 28 2012 Dia 4
Google Analytics Bootcamp Bogota Junio 28 2012 Dia 4Google Analytics Bootcamp Bogota Junio 28 2012 Dia 4
Google Analytics Bootcamp Bogota Junio 28 2012 Dia 4
 
Sql server 2
Sql server 2Sql server 2
Sql server 2
 
Sql server introduction fundamental
Sql server introduction fundamentalSql server introduction fundamental
Sql server introduction fundamental
 
Reporte Cámara Colombiana de Comercio Electrónico Retail, Banking y Travel
Reporte Cámara Colombiana de Comercio Electrónico Retail, Banking y TravelReporte Cámara Colombiana de Comercio Electrónico Retail, Banking y Travel
Reporte Cámara Colombiana de Comercio Electrónico Retail, Banking y Travel
 

Ähnlich wie Query parameterization

Sql Server Query Parameterization
Sql Server Query ParameterizationSql Server Query Parameterization
Sql Server Query ParameterizationMindfire Solutions
 
Sql query performance analysis
Sql query performance analysisSql query performance analysis
Sql query performance analysisRiteshkiit
 
MySQL Performance Optimization
MySQL Performance OptimizationMySQL Performance Optimization
MySQL Performance OptimizationMindfire Solutions
 
Presentation interpreting execution plans for sql statements
Presentation    interpreting execution plans for sql statementsPresentation    interpreting execution plans for sql statements
Presentation interpreting execution plans for sql statementsxKinAnx
 
Sql tuning guideline
Sql tuning guidelineSql tuning guideline
Sql tuning guidelineSidney Chen
 
Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007paulguerin
 
My SQL Skills Killed the Server
My SQL Skills Killed the ServerMy SQL Skills Killed the Server
My SQL Skills Killed the ServerdevObjective
 
Brad McGehee Intepreting Execution Plans Mar09
Brad McGehee Intepreting Execution Plans Mar09Brad McGehee Intepreting Execution Plans Mar09
Brad McGehee Intepreting Execution Plans Mar09guest9d79e073
 
Brad McGehee Intepreting Execution Plans Mar09
Brad McGehee Intepreting Execution Plans Mar09Brad McGehee Intepreting Execution Plans Mar09
Brad McGehee Intepreting Execution Plans Mar09Mark Ginnebaugh
 
Application sql issues_and_tuning
Application sql issues_and_tuningApplication sql issues_and_tuning
Application sql issues_and_tuningAnil Pandey
 
Overview of query evaluation
Overview of query evaluationOverview of query evaluation
Overview of query evaluationavniS
 
3 CityNetConf - sql+c#=u-sql
3 CityNetConf - sql+c#=u-sql3 CityNetConf - sql+c#=u-sql
3 CityNetConf - sql+c#=u-sqlŁukasz Grala
 
Advanced MySQL Query Optimizations
Advanced MySQL Query OptimizationsAdvanced MySQL Query Optimizations
Advanced MySQL Query OptimizationsDave Stokes
 
05_DP_300T00A_Optimize.pptx
05_DP_300T00A_Optimize.pptx05_DP_300T00A_Optimize.pptx
05_DP_300T00A_Optimize.pptxKareemBullard1
 
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...Dave Stokes
 
Part3 Explain the Explain Plan
Part3 Explain the Explain PlanPart3 Explain the Explain Plan
Part3 Explain the Explain PlanMaria Colgan
 

Ähnlich wie Query parameterization (20)

Sql Server Query Parameterization
Sql Server Query ParameterizationSql Server Query Parameterization
Sql Server Query Parameterization
 
Sql query performance analysis
Sql query performance analysisSql query performance analysis
Sql query performance analysis
 
MySQL Performance Optimization
MySQL Performance OptimizationMySQL Performance Optimization
MySQL Performance Optimization
 
Presentation interpreting execution plans for sql statements
Presentation    interpreting execution plans for sql statementsPresentation    interpreting execution plans for sql statements
Presentation interpreting execution plans for sql statements
 
Sql tuning guideline
Sql tuning guidelineSql tuning guideline
Sql tuning guideline
 
Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007
 
My SQL Skills Killed the Server
My SQL Skills Killed the ServerMy SQL Skills Killed the Server
My SQL Skills Killed the Server
 
Brad McGehee Intepreting Execution Plans Mar09
Brad McGehee Intepreting Execution Plans Mar09Brad McGehee Intepreting Execution Plans Mar09
Brad McGehee Intepreting Execution Plans Mar09
 
Brad McGehee Intepreting Execution Plans Mar09
Brad McGehee Intepreting Execution Plans Mar09Brad McGehee Intepreting Execution Plans Mar09
Brad McGehee Intepreting Execution Plans Mar09
 
Application sql issues_and_tuning
Application sql issues_and_tuningApplication sql issues_and_tuning
Application sql issues_and_tuning
 
MySQL performance tuning
MySQL performance tuningMySQL performance tuning
MySQL performance tuning
 
Module08
Module08Module08
Module08
 
Module08
Module08Module08
Module08
 
Overview of query evaluation
Overview of query evaluationOverview of query evaluation
Overview of query evaluation
 
3 CityNetConf - sql+c#=u-sql
3 CityNetConf - sql+c#=u-sql3 CityNetConf - sql+c#=u-sql
3 CityNetConf - sql+c#=u-sql
 
Advanced MySQL Query Optimizations
Advanced MySQL Query OptimizationsAdvanced MySQL Query Optimizations
Advanced MySQL Query Optimizations
 
05_DP_300T00A_Optimize.pptx
05_DP_300T00A_Optimize.pptx05_DP_300T00A_Optimize.pptx
05_DP_300T00A_Optimize.pptx
 
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...
Open Source 1010 and Quest InSync presentations March 30th, 2021 on MySQL Ind...
 
Part3 Explain the Explain Plan
Part3 Explain the Explain PlanPart3 Explain the Explain Plan
Part3 Explain the Explain Plan
 
Database testing
Database testingDatabase testing
Database testing
 

Mehr von Riteshkiit

Mehr von Riteshkiit (11)

Backup and restore
Backup and restoreBackup and restore
Backup and restore
 
Database index
Database indexDatabase index
Database index
 
Index_2
Index_2Index_2
Index_2
 
Order by and join
Order by and joinOrder by and join
Order by and join
 
Sql server introduction
Sql server introductionSql server introduction
Sql server introduction
 
Database design
Database designDatabase design
Database design
 
Statistics
StatisticsStatistics
Statistics
 
Index
IndexIndex
Index
 
Addhoc query
Addhoc queryAddhoc query
Addhoc query
 
Sql server JOIN
Sql server JOINSql server JOIN
Sql server JOIN
 
Topics
TopicsTopics
Topics
 

Query parameterization

  • 2. INDEX  Adhoc Query  Predicates Order  Execution Plan  Query Optimizer  Parameter Sniffing  Indexes  Statistics  Database Engine Tuning Advisor
  • 3. Adhoc Query  Any non-Parameterized queries 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:  Compilation  Execution
  • 4. Properties Of Addhoc Queries  Case sensitive  Space sensitive  Parameter sensitive  Sql server treats two same sql queries of different parameters as a two different sql statements. For example:  SELECT MsgID, Severity FROM SqlMessage WHERE MsgID = 1  SELECT MsgID, Severity FROM SqlMessage WHERE MsgID = 2
  • 5. Effect Of Faulty C# Code  Sql server has 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 statements.
  • 6. Predicates Order  Does order of predicates in WHERE clause matters?  WHERE vcLanguage = 'English' AND ntAge = 12  WHERE ntAge = 12 AND vcLanguage = 'English'
  • 9. Query Optimizer The query optimizer in SQL Server is cost-based. It includes:  Cost for using different resources (CPU and IO)  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.
  • 10. Parameter Sniffing  Sql server generates execution paln according to the first parameter  This execution plan may bad for other parameters. Solution:  Create multiples stored procedures.  Use optimizer for query hints.
  • 11. What Is An Index ?  Index is a way to organize data to make searching, sorting and grouping fasters  we need indexing when :  WHERE, ON, HAVING clause (Searching)  ORDER BY clause (Sorting)  GROUP BY clause (Grouping) etc.
  • 12. Table 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
  • 13. Types Of Index  Table without any index is called Heap  There are two type of index:  Clustered index  Non-Clustered index
  • 14. Clustered Index  When we create a clustered index on any table physical organization of table is changed.  Now data of table is stored as a balanced tree(B tree). CREATE UNIQUE [CLUSTERED] INDEX <Name> ON <ObjectName>( <ColumnName> [ASC | DESC ] [ ,...n ] )
  • 15.
  • 16. Types Of Scanning  Table scan: It is very slow can and it is used only if table has not any clustered index.  Index scan: It is also slow scan. 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.
  • 17. Clustered Index  If we create table with primary key, sql server automatically creates clustered index on that table  A table can have only one clustered index .  Physical order of rows of table is same as logical order of key columns of clustered index.
  • 18. Terms Of Execution Plan  Predicate: It is condition in WHERE clause which is either non-key column or column which has not been covered.  Object: It is name of source from where it getting the data. It can be name of table, Clustered index or non- clustered index  Output list: It is name of the columns which is getting from object.  Seek Predicate: It is condition in WHERE clause which is either key column or fully covered.
  • 19. Non-Clustered Index  It is logical organization of data of table. A non-clustered index can be of two types.  Heap  Based on clustered index.  If table has clustered index then leaf node of non- clustered index keeps the key columns of clustered index.  If the table has not any clustered index then leaf node of non-clustered index keeps RID which unique of each row of table.
  • 22. 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.
  • 23. Statistics Analysis  The query optimizer uses statistics to create query plans that improve query performance  A correct statistics will lead to high-quality query plan.  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.
  • 24. Auto Create Statistics  Default setting of auto create statistics is ON.  It creates when:  Clustered and non clustered Index is created  Select query is executed.  Auto create and updates applies strictly to single-column statistics.
  • 25. Why Query 2 Is Performing Better  If we perform following operations on field of any table in query predicate:  Using any system function or user defined function  Scalar operation like addition, multiplication etc.  Type casting  In this situation sql server query optimizer is not able to estimate correct cardinality using statistics.
  • 26. To Improve Cardinality  If possible, simplify expressions with constants in them.  If possible, don't perform any operation on the any field of a table in WHERE Clause, ON Clause, HAVING Clause  Don't use local variables in WHERE Clause, ON Clause, HAVING Clause.  If there is any cross relationship among fields or there is a complex expression in a field in a query predicates, it is better to create a computed column and then create a non-clustered index on it.
  • 27. To Improve Cardinality  If possible, don't update the value of parameters of a function or stored procedure before using in sql statement  Use OPTIMIZE FOR clause when you want to optimize a sql query on the basis of specific parameter value.  If you want to update the value parameter of a stored procedure or a function create a similar procedure or function and execute it form base procedure or function by passing the updated value as a parameter.  Create user defined multi column statistics if query predicates have more than one fields of a table.
  • 28. SQL Server Tools  Sql query profiler  Database Tuning Advisor  Client Statistics  Resource Governor  Data Collections