Accélérer les requêtes de recherche de points grâce à l’optimisation de la recherche¶
Les requêtes de recherche de points sont des requêtes dont on s’attend à ce qu’elles renvoient un petit nombre de lignes. Le service d’optimisation de la recherche peut améliorer les performances des requêtes de recherche de points qui utilisent les éléments suivants :
Prédicats d’égalité (par exemple,
column_name = constant
).
Les sections suivantes fournissent de plus amples informations sur la prise en charge de l’optimisation de la recherche pour les requêtes de recherche de point :
Permettre l’optimisation de la recherche pour les requêtes de recherche de point¶
Les requêtes de recherche de point ne sont pas améliorées si vous n’activez pas l’optimisation de la recherche pour les colonnes référencées par le prédicat de la requête. Pour améliorer les performances des requêtes de recherche de point sur une table, utilisez la commande ALTER TABLE … ADD SEARCH OPTIMIZATION pour :
Activer l’optimisation de la recherche pour des colonnes spécifiques.
Activer l’optimisation de la recherche pour toutes les colonnes de la table.
En général, la meilleure pratique consiste à n’activer l’optimisation de la recherche que pour des colonnes spécifiques. Utilisez la clause ON EQUALITY pour spécifier les colonnes. Cet exemple active l’optimisation de la recherche pour une colonne spécifique :
ALTER TABLE mytable ADD SEARCH OPTIMIZATION ON EQUALITY(mycol);
Pour spécifier EQUALITY pour toutes les colonnes des types de données pris en charge (à l’exception de semi-structurées et GEOGRAPHY) :
ALTER TABLE mytable ADD SEARCH OPTIMIZATION;
Pour plus d’informations, voir Activation et désactivation de l’optimisation de la recherche.
Exemples de requêtes de recherche de point prises en charge¶
Le service d’optimisation de la recherche peut améliorer les performances de la requête suivante qui utilise un prédicat d’égalité :
SELECT * FROM test_table WHERE id = 3;
Une clause IN est prise en charge par le service d’optimisation de la recherche :
SELECT id, c1, c2, c3
FROM test_table
WHERE id IN (2, 3)
ORDER BY id;