Reads were slow. You added an index. Reads got fast. Then the nightly job started timing out.
An index isn't free storage — it's a second copy of your data, kept sorted. Every insert now writes twice: once to the table, once to the tree. Five indexes means six writes for one row.
And a B-tree resists change. Inserting into a full page splits it, which can split its parent, which can split its parent. One row, several pages rewritten.
Which is why:
| Table | Indexing guidance |
|---|---|
| Read-heavy | Index generously |
| Write-heavy | Every index has rent |
| Unused index | Pure cost, zero benefit |
Most databases will tell you which indexes are never used. Almost nobody asks.
