- Preface — Why is indexing a development task? 
- Anatomy of an Index — What does an index look like? - The Leaf Nodes — A doubly linked list 
- The B-Tree — It’s a balanced tree 
- Slow Indexes, Part I — Two ingredients make the index slow 
 
- The Where Clause — Indexing to improve search performance - The Equals Operator — Exact key lookup - Primary Keys — Verifying index usage 
- Concatenated Keys — Multi-column indexes 
- Slow Indexes, Part II — The first ingredient, revisited 
 
- Functions — Using functions in the - whereclause- Case-Insensitive Search — - UPPERand- LOWER
- User-Defined Functions — Limitations of function-based indexes 
- Over-Indexing — Avoid redundancy 
 
- Bind Variables — For security and performance 
- Searching for Ranges — Beyond equality - Greater, Less and - BETWEEN— The column order revisited
- Indexing SQL - LIKEFilters —- LIKEis not for full-text search
- Index Combine — Why not using one index for every column? 
 
- Partial Indexes — Indexing selected rows 
- NULLin the Oracle Database — An important curiosity- NULLin Indexes — Every index is a partial index
- NOT NULLConstraints — affect index usage
- Emulating Partial Indexes — using function-based indexing 
 
- Obfuscated Conditions — Common anti-patterns - Dates — Pay special attention to - DATEtypes
- Numeric Strings — Don’t mix types 
- Combining Columns — use redundant - whereclauses
- Smart Logic — The smartest way to make SQL slow 
- Math — Databases don’t solve equations 
 
 
- Testing and Scalability — About hardware - Data Volume — Sloppy indexing bites back 
- System Load — Production load affects response time 
- Response Time and Throughput — Horizontal scalability 
 
- The Join Operation — Not slow, if done right - Nested Loops — About the N+1 selects problem in ORM 
- Hash Join — Requires an entirely different indexing approach 
- Sort-Merge Join — Like a zipper on two sorted sets 
 
- Clustering Data — To reduce IO - Index Filter Predicates Intentionally Used — to tune - LIKE
- Index-Only Scan — Avoiding table access 
- Index-Organized Table — Clustered indexes without tables 
 
- Sorting and Grouping — Pipelined - order by: the third power- Indexed Order By — - whereclause interactions
- ASC/- DESCand- NULL FIRST/- LAST— changing index order
- Indexed Group By — Pipelining - group by
 
- Partial Results — Paging efficiently - Selecting Top-N Rows — if you need the first few rows only 
- Fetching The Next Page — The offset and seek methods compared 
- Window-Functions — Pagination using analytic queries 
 
- Insert, Delete and Update — Indexing impacts on DML statements 
If you like this page, you might also like …
… to subscribe my mailing lists, get free stickers, buy my book or join a training.
- Execution plans — getting and reading database execution plans 
- Myth Directory — Common myth and misbeliefs 
- Example Schema — - CREATEand- INSERTscripts
- Glossary — Important terms briefly explained 

