Choosing Your Clustered Index

Preview:

DESCRIPTION

We often hear that you should always have clustered indexes on your tables. What's left off of this discussion is the how to choose the columns for this index. Should it be the primary key? Or some other column or set of columns? Having the wrong key column(s) in the clustered index can lead to performance problems, possibly worse than having no clustered index on the table at all. In this session, we'll review common patterns for selecting clustered indexes and how to determine which pattern you need. Also, we'll look at how to analyze tables to help select the best clustered index for every table. http://www.jasonstrate.com/go/20131010-IX/

Citation preview

Choosing Your Clustered Index

Jason Strate

e: jstrate@pragmaticworks.com

e: jasonstrate@gmail.com

b: www.jasonstrate.com

t: StrateSQL

Resources jasonstrate.com/go/indexing

Introduction

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

• Industry leaders in Microsoft BI and SQL Server Platform

• SQL Server Professionals - PASS Board of Directors, Speakers, Authors and MVP’s

• National Sales Team Divided by Microsoft Territories

• National System Integrator (NSI)• Gold Certified in Business Intelligence and Data

Platform• Platform Modernization/Safe Passage• Premier Partner for PDW SI Partner Program

MS PDW Partner of Year FY13Frontline Partnership Partner of the Year for Big DataExecutive sponsor - Andy Mouacdie, WW sales director PDW

• Over 7,200 customers worldwide• Over 186,000 people in PW database for demand

generation

About Pragmatic Works

Navigation

Challenge of data…

Driving for performance

Check you options!

Agenda

Introduction Clustered Index or Heap

Clustered Index Qualities

Clustered Index Patterns

Summary

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Session Goals

• Define basics related to clustered indexes

• Explain rules behind selecting clustering key

• Demonstrate differences between key column choices

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

CLUSTERED INDEX OR HEAP

IntroductionClustered Index or

Heap

Clustered Index

Qualities

Clustered Index

PatternsSummary

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Heap Structure

• Pile of data

– Unordered

– First in, first out

– Scan “happy”

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Heap

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Heap

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Clustered Index

• Mechanism for storing data

– Ordered

– Structured

– Accessible

– Direct path

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Clustered Index

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Clustered Index

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

DEMOClustered Index or Heap

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Pro Tip: Default to Clustered Indexes, unless heaps are proven to improve performance

CLUSTERED INDEX QUALITIES

IntroductionClustered Index or

Heap

Clustered Index

Qualities

Clustered Index

PatternsSummary

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Clustered Index Qualities

Static Narrow

UniqueEver-

increasing

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Clustered Index Qualities

Static Narrow

UniqueEver-

increasing

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Clustered Index Qualities

Static Narrow

UniqueEver-

increasing

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Narrow

Size

Rows 4 8 16 32 64

10,000 0.04 0.08 0.15 0.31 0.61

100,000 0.38 0.76 1.53 3.05 6.10

1,000,000 3.81 7.63 15.26 30.52 61.04

10,000,000 38.15 76.29 152.59 305.18 610.35

100,000,000 381.47 762.94 1,525.88 3,051.76 6,103.52

1,000,000,000 3,814.70 7,629.39 15,258.79 30,517.58 61,035.16

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Clustered Index Qualities

Static Narrow

UniqueEver-

increasing

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Unique

• Uniqueifier

Size

Rows 4 8 16 32 64

10,000 0.08 0.11 0.19 0.34 0.65

100,000 0.76 1.14 1.91 3.43 6.48

1,000,000 7.63 11.44 19.07 34.33 64.85

10,000,000 76.29 114.44 190.73 343.32 648.50

100,000,000 762.94 1,144.41 1,907.35 3,433.23 6,484.99

1,000,000,000 7,629.39 11,444.09 19,073.49 34,332.28 64,849.85

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Clustered Index Qualities

Static Narrow

UniqueEver-

increasing

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Ever-Increasing

1 2 3 4 5 6

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Ever-Increasing

1 3 5 6 2 4

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Ever-Increasing

1 2 3 4 5 6

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

These are not unbreakable rules!

CLUSTERED INDEX PATTERNS

IntroductionClustered Index or

Heap

Clustered Index

Qualities

Clustered Index

PatternsSummary

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Clustered Index Patterns

Identity Column

Surrogate Key

Foreign KeyMulti-

Column

Globally Unique

Identifier

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Identity Column

• Non-related value that defines each row uniquely

• Assigned when data is inserted

• Typically uses:

– Int or bigint

– IDENTITY or SEQUENCE

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Identity Column

Static

Narrow

Unique

Ever-increasing

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

DEMOIdentity Column

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Surrogate Key

• Unique value is a part of the row

• Assigned in the source data

• Data type dependent on the data

• Value should be unchanging

– Employee ID

– Social Security Number

– Birthdate

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Surrogate Key

Static

Narrow

Unique

Ever-increasing

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

DEMOSurrogate Key

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Foreign Key

• One-to-many relationships

• Access path in child via parent

• Piggy-backs identity pattern

– Parent left of child identity value

• Common in many applications

– Order header to details

– Hotels to rooms

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Foreign Key

Static

Narrow

Unique

Ever-increasing

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

DEMOForeign Key

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Multi-Column

• Similar to foreign key pattern

• Many-to-many relationships

• Highly dependent on selectivity

• NOT a collection of dimension keys

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Multi-Column

Static

Narrow

Unique

Ever-increasing

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

DEMOMulti-Column

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Globally Unique Identifier

• Non-related value that defines each row uniquely

• Assigned when data is inserted

– Or from the application

• Typically uses:

– uniqueidentifier

– NEWID() or NEWSEQUENTIALID()

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Globally Unique Identifier

Static

Narrow

Unique

Ever-increasing

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

DEMOGlobally Unique Identifier

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Pro Tip: Clustered indexes should be Static, Narrow, Unique, and Ever-increasing

SUMMARY

IntroductionClustered Index or

Heap

Clustered Index

Qualities

Clustered Index

PatternsSummary

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

Summary

• Clustered indexes are important

• Select clustering keys based on need

• Validate clustered indexes over time

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

More Information

Expert Performance IndexingFor SQL Server 2012

Jason StrateTed Krueger

OverviewStatistics

MaintenanceTools

Analysis

http://amzn.com/1430237414

MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

ServicesSpeed development through training, and rapid development services from Pragmatic Works.

ProductsBI products to covert to a Microsoft BI platform and simplify development onthe platform.

FoundationHelping those who do not have themeans to get into information technologyachieve their dreams.

For more information…

Name: Jason Strate

Email: jstrate@pragmaticworks.com

Blog: www.jasonstrate.com

Resource: jasonstrate.com/go/indexing

Recommended