Download presentation
Presentation is loading. Please wait.
1
All about Indexes Gail Shaw
2
Please Thank & Support our Sponsors
SQL Saturday is made possible with the generous support of these sponsors. You can support them by opting-in and visiting them in the sponsor area. Global Alliance Partner: Venue & Internet Sponsor: Silver Sponsor: Operations Support: Endless Support from: OGMA Consulting Corp. Bronze Sponsor:
3
Agenda Why index? Index Architecture Non-clustered Indexes
Other index types
4
Overview
5
Why index? To reduce the number of rows in consideration for a query as early as possible To support operations that require a sort order for rows To enforce uniqueness upon a column, set of columns or subset of values in a column
6
Index Architecture
7
Index architecture B-tree (balanced tree)
Double-linked list at all levels
8
Index architecture
9
Index pages Two types of pages found in indexes Data pages Index pages
Data pages found at the leaf level of a clustered index Index pages found at the non-leaf level of a clustered index and all levels of a nonclustered index
10
Index operations Seek Navigation down the b-tree to find a row or the start/end of a range of rows Scan Read of (potentially) the entire index leaf-level Lookup Single-row seek against the clustered index/heap
11
Definitions Density – Measure of how unique a column is
Selectivity – What % of a table a predicate will return Cardinality – How many rows a query operator will affect Predicate – An expression that evaluates to True or False. Seek predicate – A predicate which SQL can evaluate by traversing an index’s b-tree
12
Nonclustered Indexes
13
Architecture Nonclustered indexes are secondary structures
They are separate from the table but always in-sync with it One row in the index for each row in the table Each index row has a pointer to the actual data row If the table has a clustered index, this is the clustered index key If the table is a heap, this is the RID (file ID : page number : slot index)
14
Architecture A, 2 K, 7 A, 2 C, 8 E, 1 E, 8 I, 6 K, 7 M, 6 N, 9 S, 1
F, 7 F, 9 H, 1 I, 6 K, 7 M,6 N,9 S,1 S, 8
15
Guidelines Indexes should be selective or covering (or both)
Wider indexes tend to be more useful Consider covering indexes for frequently run queries Consider indexes to support order by and group by Use INCLUDE for columns that are selected, but not involved in filters/joins
16
Indexing for equality When all where clause predicates are an equality
Order of columns in the index don’t matter for this query SQL does not seek on one, then the second, etc SQL will do a multi-column seek to the beginning or end of the range of rows Order of index columns does matter when trying to support multiple queries with one index Seek only possible on a left-based subset of the index key Don’t put most selective column first by default
17
Indexing for inequality
Columns used for equality matches before those for inequality When dealing with two or more inequality predicates, column order implied by which predicate returns fewer rows Selectivity much less important for inequality predicates, cardinality is more relevant
18
Indexing for sorts/group by
Indexes are logically ordered by the index key columns As such, an index can provide the order needed for an ORDER BY or a stream aggregate Usually should be considered after considering indexes to support the WHERE clause Not always possible to achieve
19
Indexing for joins Three join types in SQL Server Nested loop
Merge join Hash join
20
Indexing for joins Nested loop can benefit from an index on the inner table Merge requires rows sorted in the join order, so can benefit from indexes on both tables Hash doesn’t require any indexes at all Secondary consideration after indexing for the WHERE clause
21
Filtered indexes Index on a subset of the table
Filter condition should be simple. It cannot reference a computed column, spatial data types or Hierarchy. Very useful for enforcing uniqueness on a subset of the table To be useful for a query, the predicate must match exactly Parameterised queries may not use the filtered index
22
Include columns Only included at the leaf level of the index
Does not count towards the 16 column/900 byte limit for index keys Only TEXT, NTEXT, IMAGE cannot be INCLUDE columns
23
Thank you
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.