SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Using indexes
Index architecture
clustered
nonclustered
CREATE INDEX (T-SQL)
Useful tips
Index options
Spatial indexes

1
Index architecture

2
Index architecture

3
Index architecture (clustered)

4
Index architecture (nonclustered)

5
CREATE INDEX (T-SQL)
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX
index_name
ON <object> ( column [ ASC | DESC ] [ ,...n ] )
[ INCLUDE ( column_name [ ,...n ] ) ]
[ WHERE <filter_predicate> ]
[ WITH ( <relational_index_option> [ ,...n ] ) ]
[ ON { partition_scheme_name ( column_name )
| filegroup_name
| default
}
]
[ FILESTREAM_ON { filestream_filegroup_name |
partition_scheme_name | "NULL" } ]

!
[;]

6
CREATE INDEX (T-SQL)
<relational_index_option> ::=
{
PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
| DROP_EXISTING = { ON | OFF }
| ONLINE = { ON | OFF }
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
| DATA_COMPRESSION = { NONE | ROW | PAGE}
[ ON PARTITIONS ( { <partition_number_expression> | <range> }
[ , ...n ] ) ]
}
7
Useful tips
Consider using a clustered index for queries that do the following:

!
•
•
•
•

Return a range of values by using operators such as BETWEEN, >, >=, <, and <=.
Return large result sets.
Use JOIN clauses; typically these are foreign key columns.
Use ORDER BY, or GROUP BY clauses.

•
•
•
•

Are unique or contain many distinct values
Are accessed sequentially
Defined as IDENTITY because the column is guaranteed to be unique within the table.
Used frequently to sort the data retrieved from a table.

•
•

Columns that undergo frequent changes
Wide keys

!
Consider columns that have one or more of the following attributes:
!

!
Clustered indexes are not a good choice for the following attributes:
!

8
Useful tips
Consider the characteristics of the database when designing nonclustered indexes.

!

• Databases or tables with low update requirements, but large volumes of data can benefit
from many nonclustered indexes to improve query performance. Consider creating filtered
indexes for well-defined subsets of data to improve query performance, reduce index storage
costs, and reduce index maintenance costs compared with full-table nonclustered indexes.
• Online Transaction Processing applications and databases that contain heavily updated
tables should avoid over-indexing. Additionally, indexes should be narrow, that is, with as few
columns as possible.

!
Consider using a nonclustered index for queries that have the following attributes:
!

• Use JOIN or GROUP BY clauses.
• Queries that do not return large result sets.
• Contain columns frequently involved in search conditions of a query, such as WHERE clause,
that return exact matches.

!
Consider columns that have one or more of these attributes:
!

• Cover the query.
• Lots of distinct values, such as a combination of last name and first name, if a clustered index
is used for other columns.

9
Useful tips
Query in which the
column predicate is
one of these
Exact match to a specific
value

Query description and example

Index to consider

Searches for an exact match in which the query uses the WHERE
Nonclustered or
clause to specify a column entry with a specific value. For example: clustered index on the
Id column.

! Id, [Login], Email FROM Users WHERE Id = 202
SELECT

Searches for an exact match to a value in a specified list of values.
Exact match to a value in an For example:
IN (x,y,z) list

! Id, [Login], Email FROM Users WHERE Id IN (603, 658, 1371)
SELECT

Nonclustered or
clustered index on the
Id column.

Searches for a range of values in which the query specifies any entry
that has a value between two values. For example:

Range of values

! Id, UserId, CreateDate, Content FROM Posts WHERE CreateDate
SELECT
>= '2013-03-01 12:00' AND CreateDate <= '2013-03-01 12:30‘
!
Or
! Id, UserId, CreateDate, Content FROM Posts WHERE CreateDate
SELECT

Clustered or
nonclustered index on
the CreateDate column.

BETWEEN '2013-03-01 12:00' AND '2013-03-01 12:30'

Join between tables

Searches for rows in a table that match a row in another table based
Nonclustered or
on a join predicate. For example:
clustered index on the
Id and UserId columns.
SELECT u.Id, u.[Login], p.Content

!

FROM Users u JOIN Posts p ON u.Id = p.UserId WHERE u.Id = 202

10
Useful tips
Query in which the
column predicate is
one of these
LIKE comparison

Sorted or aggregated

PRIMARY KEY or UNIQUE
constraint

Query description and example
Searches for matching rows that start with a specific character
string such as 'abc%'. For example:

! Id, [Login], Email FROM Users WHERE [Login] LIKE 'ma%'
SELECT

Nonclustered or
clustered index on the
Login column.

Nonclustered or
Requires an implicit or explicit sort order or an aggregation (GROUP clustered index on the
BY). For example:
sorted or aggregated
column.
SELECT p.Id, p.UserId, u.[Login], p.Content
For sort columns,
FROM Posts p JOIN Users u ON p.UserId = u.Id
consider specifying the
ORDER BY p.UserId, p.CreateDate
ASC or DESC order of
Searches for duplicates of new index key values in insert and update Clustered or
operations, to enforce PRIMARY KEY and UNIQUE constraints. For
nonclustered index on
example:
the column or columns

!

! Users ([Login], [Password], Email)
INSERT

VALUES ('xdfyht', 'dh4G57hn1', 'xdfyht@gmail.com')

UPDATE or DELETE operation Searches for rows in an update or delete operation in which the
in a PRIMARY KEY/FOREIGN column participates in a PRIMARY KEY/FOREIGN KEY relationship,
KEY relationship
with or without the CASCADE option.
Contains one or more columns in the select list that are not used for
searching and lookups. For example:
Column is in the select list
but not in the predicate.

Index to consider

! UserId, CreateDate, Content FROM Posts
SELECT

WHERE UserId = 202 ORDER BY CreateDate DESC

defined in the
constraint.
Nonclustered or
clustered index on the
foreign key column.
Nonclustered index with
Content specified in the
INCLUDE clause.

11
Index options (fill factor)

12
Index options (included columns)

13
Index options (filtered)
Views vs. Filtered Indexes
Allowed in expressions

Views

Filtered indexes

Computed columns

Yes

No

Joins

Yes

No

Multiple tables

Yes

No

Simple comparison logic in a predicate

Yes

Yes

Complex logic in a predicate

Yes

No

14
Spatial indexes

15
Spatial indexes

16
Spatial indexes

17
Spatial indexes

18
Spatial indexes (conditions)
•
•
•
•
•
•
•
•

geometry1.STContains(geometry2) = 1
geometry1.STDistance(geometry2) < @r
geometry1.STDistance(geometry2) <= @r
geometry1.STEquals(geometry2) = 1
geometry1.STIntersects(geometry2) = 1
geometry1.STOverlaps(geometry2) = 1
geometry1.STTouches(geometry2) = 1
geometry1.STWithin(geometry2) = 1

•
•
•
•

geography1.STEquals(geography2) = 1
geography1.STDistance(geography2) < @r
geography1.STDistance(geography2) <= @r
geography1.STIntersects(geography2) = 1
19
about:me
http://
unknowntransfer.blogspot.com
akor@ciklum.com
Skype: unknowntransfer

20

Más contenido relacionado

La actualidad más candente

Database index by Reema Gajjar
Database index by Reema GajjarDatabase index by Reema Gajjar
Database index by Reema GajjarReema Gajjar
 
Indexes: The Second Pillar of Database Wisdom
Indexes: The Second Pillar of Database WisdomIndexes: The Second Pillar of Database Wisdom
Indexes: The Second Pillar of Database Wisdomgisborne
 
Database indexing framework
Database indexing frameworkDatabase indexing framework
Database indexing frameworkNitin Pande
 
Columnstore indexes in sql server 2014
Columnstore indexes in sql server 2014Columnstore indexes in sql server 2014
Columnstore indexes in sql server 2014Antonios Chatzipavlis
 
Sql server ___________session_17(indexes)
Sql server  ___________session_17(indexes)Sql server  ___________session_17(indexes)
Sql server ___________session_17(indexes)Ehtisham Ali
 
dotnetMALAGA - Sql query tuning guidelines
dotnetMALAGA - Sql query tuning guidelinesdotnetMALAGA - Sql query tuning guidelines
dotnetMALAGA - Sql query tuning guidelinesJavier García Magna
 
Sql server lesson6
Sql server lesson6Sql server lesson6
Sql server lesson6Ala Qunaibi
 
Database indexing techniques
Database indexing techniquesDatabase indexing techniques
Database indexing techniquesahmadmughal0312
 
9. index and index organized table
9. index and index organized table9. index and index organized table
9. index and index organized tableAmrit Kaur
 
Dynamic Data Validation Lists
Dynamic Data Validation ListsDynamic Data Validation Lists
Dynamic Data Validation ListsMarc Rivait, PMP
 
MySQL: Indexing for Better Performance
MySQL: Indexing for Better PerformanceMySQL: Indexing for Better Performance
MySQL: Indexing for Better Performancejkeriaki
 
New slides access
New slides accessNew slides access
New slides accessjooomalaga
 
Sql server 2014 x velocity – updateable columnstore indexes
Sql server 2014 x velocity – updateable columnstore indexesSql server 2014 x velocity – updateable columnstore indexes
Sql server 2014 x velocity – updateable columnstore indexesPat Sheehan
 
Tunning sql query
Tunning sql queryTunning sql query
Tunning sql queryvuhaininh88
 
Dynamic Publishing with Arbortext Data Merge
Dynamic Publishing with Arbortext Data MergeDynamic Publishing with Arbortext Data Merge
Dynamic Publishing with Arbortext Data MergeClay Helberg
 

La actualidad más candente (20)

Database index by Reema Gajjar
Database index by Reema GajjarDatabase index by Reema Gajjar
Database index by Reema Gajjar
 
Indexes: The Second Pillar of Database Wisdom
Indexes: The Second Pillar of Database WisdomIndexes: The Second Pillar of Database Wisdom
Indexes: The Second Pillar of Database Wisdom
 
Database indexing framework
Database indexing frameworkDatabase indexing framework
Database indexing framework
 
Columnstore indexes in sql server 2014
Columnstore indexes in sql server 2014Columnstore indexes in sql server 2014
Columnstore indexes in sql server 2014
 
Sql server ___________session_17(indexes)
Sql server  ___________session_17(indexes)Sql server  ___________session_17(indexes)
Sql server ___________session_17(indexes)
 
dotnetMALAGA - Sql query tuning guidelines
dotnetMALAGA - Sql query tuning guidelinesdotnetMALAGA - Sql query tuning guidelines
dotnetMALAGA - Sql query tuning guidelines
 
Sql server lesson6
Sql server lesson6Sql server lesson6
Sql server lesson6
 
Index Tuning
Index TuningIndex Tuning
Index Tuning
 
Database indexing techniques
Database indexing techniquesDatabase indexing techniques
Database indexing techniques
 
9. index and index organized table
9. index and index organized table9. index and index organized table
9. index and index organized table
 
SQL_Part1
SQL_Part1SQL_Part1
SQL_Part1
 
Dynamic Data Validation Lists
Dynamic Data Validation ListsDynamic Data Validation Lists
Dynamic Data Validation Lists
 
Effective Use of Excel
Effective Use of ExcelEffective Use of Excel
Effective Use of Excel
 
MySQL: Indexing for Better Performance
MySQL: Indexing for Better PerformanceMySQL: Indexing for Better Performance
MySQL: Indexing for Better Performance
 
New slides access
New slides accessNew slides access
New slides access
 
Sql server 2014 x velocity – updateable columnstore indexes
Sql server 2014 x velocity – updateable columnstore indexesSql server 2014 x velocity – updateable columnstore indexes
Sql server 2014 x velocity – updateable columnstore indexes
 
Tunning sql query
Tunning sql queryTunning sql query
Tunning sql query
 
Advance microsoft excel institute in delhi
Advance microsoft excel institute in delhiAdvance microsoft excel institute in delhi
Advance microsoft excel institute in delhi
 
Dynamic Publishing with Arbortext Data Merge
Dynamic Publishing with Arbortext Data MergeDynamic Publishing with Arbortext Data Merge
Dynamic Publishing with Arbortext Data Merge
 
Select Queries
Select QueriesSelect Queries
Select Queries
 

Destacado

Scaling the Content Repository with Elasticsearch
Scaling the Content Repository with ElasticsearchScaling the Content Repository with Elasticsearch
Scaling the Content Repository with ElasticsearchNuxeo
 
Elasticsearch and Symfony Integration - Debarko De
Elasticsearch and Symfony Integration - Debarko DeElasticsearch and Symfony Integration - Debarko De
Elasticsearch and Symfony Integration - Debarko DeDebarko De
 
Before you optimize: Understanding Execution Plans
Before you optimize: Understanding Execution PlansBefore you optimize: Understanding Execution Plans
Before you optimize: Understanding Execution PlansTimothy Corey
 
Discovering ElasticSearch
Discovering ElasticSearchDiscovering ElasticSearch
Discovering ElasticSearchBen Corlett
 
Strategies for SQL Server Index Analysis
Strategies for SQL Server Index AnalysisStrategies for SQL Server Index Analysis
Strategies for SQL Server Index AnalysisJason Strate
 
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
 
Consultas en MS SQL Server 2012
Consultas en MS SQL Server 2012Consultas en MS SQL Server 2012
Consultas en MS SQL Server 2012CarlosFloresRoman
 
MS SQL SERVER: Creating Views
MS SQL SERVER: Creating ViewsMS SQL SERVER: Creating Views
MS SQL SERVER: Creating Viewssqlserver content
 
Using grouping sets in sql server 2008 tech republic
Using grouping sets in sql server 2008   tech republicUsing grouping sets in sql server 2008   tech republic
Using grouping sets in sql server 2008 tech republicKaing Menglieng
 
Sql tuning guideline
Sql tuning guidelineSql tuning guideline
Sql tuning guidelineSidney Chen
 
e computer notes - Subqueries
e computer notes - Subqueriese computer notes - Subqueries
e computer notes - Subqueriesecomputernotes
 
Sub-queries,Groupby and having in SQL
Sub-queries,Groupby and having in SQLSub-queries,Groupby and having in SQL
Sub-queries,Groupby and having in SQLVikash Sharma
 
Overview of query evaluation
Overview of query evaluationOverview of query evaluation
Overview of query evaluationavniS
 

Destacado (20)

Scaling the Content Repository with Elasticsearch
Scaling the Content Repository with ElasticsearchScaling the Content Repository with Elasticsearch
Scaling the Content Repository with Elasticsearch
 
Elasticsearch and Symfony Integration - Debarko De
Elasticsearch and Symfony Integration - Debarko DeElasticsearch and Symfony Integration - Debarko De
Elasticsearch and Symfony Integration - Debarko De
 
Index in sql server
Index in sql serverIndex in sql server
Index in sql server
 
Before you optimize: Understanding Execution Plans
Before you optimize: Understanding Execution PlansBefore you optimize: Understanding Execution Plans
Before you optimize: Understanding Execution Plans
 
Discovering ElasticSearch
Discovering ElasticSearchDiscovering ElasticSearch
Discovering ElasticSearch
 
Strategies for SQL Server Index Analysis
Strategies for SQL Server Index AnalysisStrategies for SQL Server Index Analysis
Strategies for SQL Server Index Analysis
 
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
 
Consultas en MS SQL Server 2012
Consultas en MS SQL Server 2012Consultas en MS SQL Server 2012
Consultas en MS SQL Server 2012
 
MS SQL SERVER: Creating Views
MS SQL SERVER: Creating ViewsMS SQL SERVER: Creating Views
MS SQL SERVER: Creating Views
 
Sql db optimization
Sql db optimizationSql db optimization
Sql db optimization
 
Joins SQL Server
Joins SQL ServerJoins SQL Server
Joins SQL Server
 
Using grouping sets in sql server 2008 tech republic
Using grouping sets in sql server 2008   tech republicUsing grouping sets in sql server 2008   tech republic
Using grouping sets in sql server 2008 tech republic
 
Sql tuning guideline
Sql tuning guidelineSql tuning guideline
Sql tuning guideline
 
Sql xp 04
Sql xp 04Sql xp 04
Sql xp 04
 
Statistics
StatisticsStatistics
Statistics
 
e computer notes - Subqueries
e computer notes - Subqueriese computer notes - Subqueries
e computer notes - Subqueries
 
Sub-queries,Groupby and having in SQL
Sub-queries,Groupby and having in SQLSub-queries,Groupby and having in SQL
Sub-queries,Groupby and having in SQL
 
Locking in SQL Server
Locking in SQL ServerLocking in SQL Server
Locking in SQL Server
 
Overview of query evaluation
Overview of query evaluationOverview of query evaluation
Overview of query evaluation
 
Review of SQL
Review of SQLReview of SQL
Review of SQL
 

Similar a "Using Indexes in SQL Server 2008" by Alexander Korotkiy, part 1

ms-sql-server-150223140402-conversion-gate02.pptx
ms-sql-server-150223140402-conversion-gate02.pptxms-sql-server-150223140402-conversion-gate02.pptx
ms-sql-server-150223140402-conversion-gate02.pptxYashaswiniSrinivasan1
 
SQL.pptx for the begineers and good know
SQL.pptx for the begineers and good knowSQL.pptx for the begineers and good know
SQL.pptx for the begineers and good knowPavithSingh
 
Filtered Indexes In Sql 2008
Filtered Indexes In Sql 2008Filtered Indexes In Sql 2008
Filtered Indexes In Sql 2008wharrislv
 
Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007paulguerin
 
Intro to tsql unit 7
Intro to tsql   unit 7Intro to tsql   unit 7
Intro to tsql unit 7Syed Asrarali
 
BIS06 Physical Database Models
BIS06 Physical Database ModelsBIS06 Physical Database Models
BIS06 Physical Database ModelsPrithwis Mukerjee
 
BIS06 Physical Database Models
BIS06 Physical Database ModelsBIS06 Physical Database Models
BIS06 Physical Database ModelsPrithwis Mukerjee
 
Sydney Oracle Meetup - indexes
Sydney Oracle Meetup - indexesSydney Oracle Meetup - indexes
Sydney Oracle Meetup - indexespaulguerin
 
02 database oprimization - improving sql performance - ent-db
02  database oprimization - improving sql performance - ent-db02  database oprimization - improving sql performance - ent-db
02 database oprimization - improving sql performance - ent-dbuncleRhyme
 
Database Architecture and Basic Concepts
Database Architecture and Basic ConceptsDatabase Architecture and Basic Concepts
Database Architecture and Basic ConceptsTony Wong
 
Ms sql server ii
Ms sql server  iiMs sql server  ii
Ms sql server iiIblesoft
 
Relational Database Management System
Relational Database Management SystemRelational Database Management System
Relational Database Management Systemsweetysweety8
 

Similar a "Using Indexes in SQL Server 2008" by Alexander Korotkiy, part 1 (20)

Module08
Module08Module08
Module08
 
MS SQL Server
MS SQL ServerMS SQL Server
MS SQL Server
 
ms-sql-server-150223140402-conversion-gate02.pptx
ms-sql-server-150223140402-conversion-gate02.pptxms-sql-server-150223140402-conversion-gate02.pptx
ms-sql-server-150223140402-conversion-gate02.pptx
 
Ms sql-server
Ms sql-serverMs sql-server
Ms sql-server
 
Module 3
Module 3Module 3
Module 3
 
Physical Design and Development
Physical Design and DevelopmentPhysical Design and Development
Physical Design and Development
 
SQL.pptx for the begineers and good know
SQL.pptx for the begineers and good knowSQL.pptx for the begineers and good know
SQL.pptx for the begineers and good know
 
Filtered Indexes In Sql 2008
Filtered Indexes In Sql 2008Filtered Indexes In Sql 2008
Filtered Indexes In Sql 2008
 
Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007Myth busters - performance tuning 101 2007
Myth busters - performance tuning 101 2007
 
MySQL Indexes
MySQL IndexesMySQL Indexes
MySQL Indexes
 
Indexing
IndexingIndexing
Indexing
 
Intro to tsql unit 7
Intro to tsql   unit 7Intro to tsql   unit 7
Intro to tsql unit 7
 
BIS06 Physical Database Models
BIS06 Physical Database ModelsBIS06 Physical Database Models
BIS06 Physical Database Models
 
BIS06 Physical Database Models
BIS06 Physical Database ModelsBIS06 Physical Database Models
BIS06 Physical Database Models
 
Sydney Oracle Meetup - indexes
Sydney Oracle Meetup - indexesSydney Oracle Meetup - indexes
Sydney Oracle Meetup - indexes
 
02 database oprimization - improving sql performance - ent-db
02  database oprimization - improving sql performance - ent-db02  database oprimization - improving sql performance - ent-db
02 database oprimization - improving sql performance - ent-db
 
Database Architecture and Basic Concepts
Database Architecture and Basic ConceptsDatabase Architecture and Basic Concepts
Database Architecture and Basic Concepts
 
Ms sql server ii
Ms sql server  iiMs sql server  ii
Ms sql server ii
 
Relational Database Management System
Relational Database Management SystemRelational Database Management System
Relational Database Management System
 
V25 sql index
V25 sql indexV25 sql index
V25 sql index
 

Último

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 

Último (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

"Using Indexes in SQL Server 2008" by Alexander Korotkiy, part 1

  • 1. Using indexes Index architecture clustered nonclustered CREATE INDEX (T-SQL) Useful tips Index options Spatial indexes 1
  • 6. CREATE INDEX (T-SQL) CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON <object> ( column [ ASC | DESC ] [ ,...n ] ) [ INCLUDE ( column_name [ ,...n ] ) ] [ WHERE <filter_predicate> ] [ WITH ( <relational_index_option> [ ,...n ] ) ] [ ON { partition_scheme_name ( column_name ) | filegroup_name | default } ] [ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ] ! [;] 6
  • 7. CREATE INDEX (T-SQL) <relational_index_option> ::= { PAD_INDEX = { ON | OFF } | FILLFACTOR = fillfactor | SORT_IN_TEMPDB = { ON | OFF } | IGNORE_DUP_KEY = { ON | OFF } | STATISTICS_NORECOMPUTE = { ON | OFF } | DROP_EXISTING = { ON | OFF } | ONLINE = { ON | OFF } | ALLOW_ROW_LOCKS = { ON | OFF } | ALLOW_PAGE_LOCKS = { ON | OFF } | MAXDOP = max_degree_of_parallelism | DATA_COMPRESSION = { NONE | ROW | PAGE} [ ON PARTITIONS ( { <partition_number_expression> | <range> } [ , ...n ] ) ] } 7
  • 8. Useful tips Consider using a clustered index for queries that do the following: ! • • • • Return a range of values by using operators such as BETWEEN, >, >=, <, and <=. Return large result sets. Use JOIN clauses; typically these are foreign key columns. Use ORDER BY, or GROUP BY clauses. • • • • Are unique or contain many distinct values Are accessed sequentially Defined as IDENTITY because the column is guaranteed to be unique within the table. Used frequently to sort the data retrieved from a table. • • Columns that undergo frequent changes Wide keys ! Consider columns that have one or more of the following attributes: ! ! Clustered indexes are not a good choice for the following attributes: ! 8
  • 9. Useful tips Consider the characteristics of the database when designing nonclustered indexes. ! • Databases or tables with low update requirements, but large volumes of data can benefit from many nonclustered indexes to improve query performance. Consider creating filtered indexes for well-defined subsets of data to improve query performance, reduce index storage costs, and reduce index maintenance costs compared with full-table nonclustered indexes. • Online Transaction Processing applications and databases that contain heavily updated tables should avoid over-indexing. Additionally, indexes should be narrow, that is, with as few columns as possible. ! Consider using a nonclustered index for queries that have the following attributes: ! • Use JOIN or GROUP BY clauses. • Queries that do not return large result sets. • Contain columns frequently involved in search conditions of a query, such as WHERE clause, that return exact matches. ! Consider columns that have one or more of these attributes: ! • Cover the query. • Lots of distinct values, such as a combination of last name and first name, if a clustered index is used for other columns. 9
  • 10. Useful tips Query in which the column predicate is one of these Exact match to a specific value Query description and example Index to consider Searches for an exact match in which the query uses the WHERE Nonclustered or clause to specify a column entry with a specific value. For example: clustered index on the Id column. ! Id, [Login], Email FROM Users WHERE Id = 202 SELECT Searches for an exact match to a value in a specified list of values. Exact match to a value in an For example: IN (x,y,z) list ! Id, [Login], Email FROM Users WHERE Id IN (603, 658, 1371) SELECT Nonclustered or clustered index on the Id column. Searches for a range of values in which the query specifies any entry that has a value between two values. For example: Range of values ! Id, UserId, CreateDate, Content FROM Posts WHERE CreateDate SELECT >= '2013-03-01 12:00' AND CreateDate <= '2013-03-01 12:30‘ ! Or ! Id, UserId, CreateDate, Content FROM Posts WHERE CreateDate SELECT Clustered or nonclustered index on the CreateDate column. BETWEEN '2013-03-01 12:00' AND '2013-03-01 12:30' Join between tables Searches for rows in a table that match a row in another table based Nonclustered or on a join predicate. For example: clustered index on the Id and UserId columns. SELECT u.Id, u.[Login], p.Content ! FROM Users u JOIN Posts p ON u.Id = p.UserId WHERE u.Id = 202 10
  • 11. Useful tips Query in which the column predicate is one of these LIKE comparison Sorted or aggregated PRIMARY KEY or UNIQUE constraint Query description and example Searches for matching rows that start with a specific character string such as 'abc%'. For example: ! Id, [Login], Email FROM Users WHERE [Login] LIKE 'ma%' SELECT Nonclustered or clustered index on the Login column. Nonclustered or Requires an implicit or explicit sort order or an aggregation (GROUP clustered index on the BY). For example: sorted or aggregated column. SELECT p.Id, p.UserId, u.[Login], p.Content For sort columns, FROM Posts p JOIN Users u ON p.UserId = u.Id consider specifying the ORDER BY p.UserId, p.CreateDate ASC or DESC order of Searches for duplicates of new index key values in insert and update Clustered or operations, to enforce PRIMARY KEY and UNIQUE constraints. For nonclustered index on example: the column or columns ! ! Users ([Login], [Password], Email) INSERT VALUES ('xdfyht', 'dh4G57hn1', 'xdfyht@gmail.com') UPDATE or DELETE operation Searches for rows in an update or delete operation in which the in a PRIMARY KEY/FOREIGN column participates in a PRIMARY KEY/FOREIGN KEY relationship, KEY relationship with or without the CASCADE option. Contains one or more columns in the select list that are not used for searching and lookups. For example: Column is in the select list but not in the predicate. Index to consider ! UserId, CreateDate, Content FROM Posts SELECT WHERE UserId = 202 ORDER BY CreateDate DESC defined in the constraint. Nonclustered or clustered index on the foreign key column. Nonclustered index with Content specified in the INCLUDE clause. 11
  • 12. Index options (fill factor) 12
  • 13. Index options (included columns) 13
  • 14. Index options (filtered) Views vs. Filtered Indexes Allowed in expressions Views Filtered indexes Computed columns Yes No Joins Yes No Multiple tables Yes No Simple comparison logic in a predicate Yes Yes Complex logic in a predicate Yes No 14
  • 19. Spatial indexes (conditions) • • • • • • • • geometry1.STContains(geometry2) = 1 geometry1.STDistance(geometry2) < @r geometry1.STDistance(geometry2) <= @r geometry1.STEquals(geometry2) = 1 geometry1.STIntersects(geometry2) = 1 geometry1.STOverlaps(geometry2) = 1 geometry1.STTouches(geometry2) = 1 geometry1.STWithin(geometry2) = 1 • • • • geography1.STEquals(geography2) = 1 geography1.STDistance(geography2) < @r geography1.STDistance(geography2) <= @r geography1.STIntersects(geography2) = 1 19