Optimisation des performances des requêtes

Vous pouvez optimiser les performances des requêtes Snowflake des manières suivantes :

  • Service d’optimisation de la recherche

  • Accélération de requête.

  • La création d’une ou plusieurs vues matérialisées (en cluster ou non).

  • Clustering d’une table.

Chacune de ces méthodes d’optimisation présente des avantages différents, comme le montre le tableau suivant :

Fonctionnalité

Types de requêtes pris en charge

Remarques

Service d’optimisation de la recherche

Le service d’optimisation des recherches peut améliorer les performances de ces types de recherches pour les types de données pris en charge.

Service d’accélération des requêtes

Requêtes avec filtres ou agrégation. Si la requête comprend LIMIT, elle doit également comprendre ORDER BY.
Les filtres doivent être très sélectifs et la clause ORDER BY doit avoir une faible cardinalité.

L’accélération des requêtes fonctionne bien avec les analyses ad hoc et les requêtes dont le volume de données est imprévisible,
et les requêtes avec de grandes analyses et des filtres sélectifs.

L’accélération des requêtes et l’optimisation de la recherche sont complémentaires. Les deux peuvent accélérer la même requête. Voir Compatibilité avec l’accélération des requêtes.

Materialized views

  • Recherches d’égalité.

  • Recherches de plages.

  • Opérations de tri.

Vous pouvez également utiliser les vues matérialisées pour définir différentes clés de clustering sur la même table source ou un sous-ensemble de cette table, ou pour stocker des données JSON ou VARIANT aplaties ou des données de variantes afin qu’elles ne doivent être aplaties qu’une seule fois.

Les vues matérialisées améliorent les performances uniquement pour le sous-ensemble de lignes et de colonnes inclus dans la vue matérialisée.

Clustering de table

  • Recherches d’égalité.

  • Recherches de plages.

Une table peut être mise en cluster sur une seule clé uniquement, qui peut contenir une ou plusieurs colonnes ou expressions.

La table suivante montre lesquelles de ces optimisations ont des coûts de stockage ou de calcul :

Optimisation

Coût de stockage

Coût de calcul

Service d’optimisation de la recherche

Service d’accélération des requêtes

Vue matérialisée

Clustering de la table

[1]

Compatibilité avec l’accélération des requêtes

L’optimisation de la recherche et l”accélération des requêtes peuvent fonctionner ensemble pour optimiser les performances des requêtes. Tout d’abord, l’optimisation de la recherche permet de supprimer les micro-partitions qui ne sont pas nécessaires pour une requête. Ensuite, pour les requêtes éligibles, l’accélération des requêtes peut décharger une partie du reste du travail sur des ressources de calcul partagées fournies par le service.

Les performances des requêtes accélérées par les deux services varient en fonction de la charge de travail et des ressources disponibles.