Découpez la table géante en tables enfants physiques plus petites par une partition key, pour que chaque requête ne touche que les partitions dont elle a besoin (partition pruning) au lieu de scanner des milliards de lignes. Une table de 5 milliards de lignes de commandes se comporte toujours comme une seule table logique, mais le moteur en saute 99% quand votre WHERE filtre sur la partition key.
La forme d'une table partitionnée
orders (logical parent)
│ partition key = created_at
┌────────────────┼────────────────┬───────────────┐
▼ ▼ ▼ ▼
orders_2024_q1 orders_2024_q2 orders_2024_q3 orders_2025_q1
(child table) (child table) (child table) (child, active)
│ │
local index local index
(per child) (per child)
