Le défi d’aujourd’hui est le fruit de notre invité, Marcel Schwarze !
Une tâche typique lors de l’optimisation des performances et des coûts consiste à identifier des schémas (patterns) de requêtes exécutés fréquemment et à essayer de les optimiser. C’est tout l’objet du défi suivant : identification des types de requête fréquemment exécutés en combinaison avec les temps d’exécution associés.
Les requêtes suivantes, qui doivent être exécutées dans le cadre de la configuration du défi, fournissent un exemple de ce qui est considéré comme « des requêtes suivant le même schéma ». Dans notre scénario, les requêtes avec le même schéma ont le même texte de requête et seules les valeurs de paramètre utilisées dans les clauses WHERE sont autorisées à différer (voir les exemples).
Défi : Complétez la déclaration SQL suivante pour identifier les requêtes suivant le même schéma (selon la définition/exemples mentionnés), compter la fréquence d’exécution par schéma et additionner le temps d’exécution. Pour chaque groupe, montrez une requête échantillon. Le résultat attendu peut être vu dans la capture d’écran.
Script de configuration
ALTER SESSION SET query_tag = ‘ff_challenge’;
/* Requêtes aléatoires sans motif commun */
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER; SELECT COUNT(*) FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_NATIONKEY = 15; SELECT C_NAME FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_PHONE = ’19-144-468-5416′;
/* Premier ensemble de requêtes suivant le même schéma. Schéma = Toutes les colonnes des clients avec une condition WHERE pour C_MKTSEGMENT. */
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = ‘BUILDING’; SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = ‘AUTOMOBILE’; SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = ‘MACHINERY’; SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = ‘HOUSEHOLD’; SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = ‘BUILDING’; SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = ‘BUILDING’;
/* Deuxième ensemble de requêtes suivant le même schéma. Schéma = C_NAME et C_NATIONKEY des clients avec deux conditions WHERE pour C_MKTSEGMENT et C_NATIONKEY. */
SELECT C_NAME, C_NATIONKEY FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = ‘BUILDING’ AND C_NATIONKEY = 21; SELECT C_NAME, C_NATIONKEY FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER WHERE C_MKTSEGMENT = ‘MACHINERY’ AND C_NATIONKEY = 9;
Requête à compléter :
SELECT …
FROM table(information_schema.query_history())
WHERE query_tag = ‘ff_challenge’
AND query_text NOT ILIKE ‘%information_schema%’
GROUP BY …
ORDER BY …;
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.