Upload
jason-strate
View
718
Download
3
Tags:
Embed Size (px)
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
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: [email protected]
Blog: www.jasonstrate.com
Resource: jasonstrate.com/go/indexing