xxii
■ IntroduCtIon
index may not be selected and why it is behaving in a certain way. You will gain a deeper understanding
of how this information is collected by SQL Server through dynamic management views and what data is
worthwhile to review.
Not every index type was fully discussed in the first chapter; the types not discussed are covered in
Chapters 4, 5, and 6. Beyond the rowstore and columnstore index structures, there are a few other index
types, which are XML, spatial, full-text, and semantic search. These indexes are applicable to specific
situations. In these chapters, you’ll look into these other index types to understand what they have to offer.
You’ll also look at situations where they should be implemented.
In a similar fashion to the previous three chapters, Chapter 7 takes a dive into memory-optimized
tables. Memory-optimized tables are new to SQL Server 2014 and provide a unique capability to improve
performance with tables that are primarily memory resident.
Chapter 8 identifies and debunks some commonly held myths about indexes. Also, it outlines some best
practices in regard to indexing a table. As you move into using tools and strategies to build indexes in the
chapters that follow, this information will be important to remember.
With a firm grasp of the options for indexing, the next thing that needs to be addressed is maintenance.
In Chapter 9, you’ll look at what needs to be considered when maintaining indexes in your environment.
First you’ll look at fragmentation.
SQL Server is not without tools to automate your ability to build indexes. Chapter 10 explores these
tools and looks at ways that you can begin build indexes in your environment today with minimal effort.
The two tools discussed are the missing index DMVs and the Database Engine Tuning Advisor. You’ll look at
the benefits and issues regarding both tools and get some guidance on how to use them effectively in your
environment.
The tools alone won’t give you everything you need to index your databases. In Chapter 11, you’ll
begin to look at how to determine the indexes that are needed for a database and a table. There are a
number of strategies for selecting what indexes to build within a database. They can be built according to
recommendations by the query optimizer. They can also be built to support metadata structures such as
foreign keys. For each strategy of indexing, there are a number of considerations to take into account when
deciding whether to build the index.
Part of effective indexing is writing queries that can utilize an index on a query. Chapter 12 discusses
a number of strategies for indexing. Sometimes when querying data, the indexes you assume will be used
are not used after all. These situations are usually tied into how a query is structured or the data that is
being retrieved. Indexes can be skipped because of SARGability issues (where the query isn’t being properly
selective on the index). They can also be skipped over because of tipping point issues, such as when the
number of reads to retrieve data from an index potentially exceeds the reads to scan that or another index.
These issues affect index selection as well as the effectiveness and justification for some indexes.
Today’s DBA isn’t in a position to have only a single table to index. A database can have tens, hundreds,
or thousands of tables, and all of them need to have the proper indexes. In Chapter 10, you’ll learn some
methods to approach indexing for a single database but also for all the databases on the servers within your
environment.
What’s New in This Edition?
The release of SQL Server 2014 included a significant number of changes to how indexes can be applied to
your databases and data. Here are some of the key changes to SQL Server that involve indexing:
• Introduction of memory-optimized tables with hash indexes
• Expansion of columnstore indexes to include clustered structure
• Coverage for selective XML indexes
• Improvements to partitioning and statistics
www.it-ebooks.info