Appendix B. Multi-Column Indexes Versus Covering Indexes
These two concepts are frequently confused, especially because they can be combined. This appendix clarifies what each one does, when to use which, and how they interact — with DSQL-specific guidance on the trade-offs.
The Core Distinction
A multi-column index puts multiple columns in the index’s key — the sorted structure the database traverses during lookups. All key columns participate in the sort order and can be used in WHERE, ORDER BY, and join predicates.
A covering index adds extra columns as payload via INCLUDE. These columns are stored in the index leaf pages but are not part of the sort order. They exist solely so the database can answer a query without touching the heap (data table).
| Property | Multi-column key | INCLUDE (covering) columns |
|---|---|---|
In sort order |
Yes — determines how the B-tree is organized |
No — stored in leaf pages only |
Usable in WHERE/ORDER BY |
Yes |
No |
Usable in join predicates |
Yes |
No |
Stored in internal tree nodes |
Yes — adds overhead to tree navigation |
No — leaf pages only |
Available for ... |
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access