SQL Index partiel ou filtré


Exemple

SQL Server et SQLite permettent de créer des index contenant non seulement un sous-ensemble de colonnes, mais également un sous-ensemble de lignes.

Considérez un nombre croissant d'ordres avec order_state_id égal à terminé (2) et un nombre stable de commandes avec order_state_id equal à started (1).

Si votre entreprise utilise des requêtes comme celle-ci:

SELECT id, comment
  FROM orders
 WHERE order_state_id =  1
   AND product_id = @some_value;

L’indexation partielle vous permet de limiter l’index, en incluant uniquement les ordres inachevés:

CREATE INDEX Started_Orders
          ON orders(product_id)
       WHERE order_state_id = 1;

Cet index sera plus petit qu'un index non filtré, ce qui économise de l'espace et réduit les coûts de mise à jour de l'index.