Optimiseur de requêtes

Définition - Que signifie l’optimiseur de requêtes?

Un optimiseur de requête est un composant critique du système de gestion de base de données (SGBD) qui analyse les requêtes SQL (Structured Query Language) et détermine des mécanismes d'exécution efficaces. Un optimiseur de requête génère un ou plusieurs plans de requête pour chaque requête, chacun pouvant être un mécanisme utilisé pour exécuter une requête. Le plan de requête le plus efficace est sélectionné et utilisé pour exécuter la requête.

Les utilisateurs de base de données n'interagissent généralement pas avec un optimiseur de requête, qui fonctionne en arrière-plan.

Definir Tech explique Query Optimizer

Les requêtes SQL peuvent être des instructions simples ou complexes. Chaque instruction SQL nécessite une utilisation minimale de ressources précieuses, telles que les lectures de disque et la mémoire du serveur. L'optimiseur de requêtes garantit cela, ainsi que l'exécution accélérée de chaque requête SQL. Par exemple, un optimiseur de requête peut générer une série de plans de requête en fonction des coûts des ressources. Un plan de requête peut impliquer la lecture d'une table pour récupérer un sous-ensemble de ses données, tandis qu'un autre peut impliquer l'utilisation d'index de table pour une lecture rapide des données. Ceux-ci sont connus sous le nom d'optimiseurs basés sur les coûts.

Un optimiseur de requête peut sélectionner différents plans de requête pour la même requête, en fonction des circonstances environnementales. Par exemple, un utilisateur exécute une requête qui sélectionne environ la moitié des données d'une table. L'utilisateur exécute la requête lorsque le serveur est lourdement chargé de plusieurs connexions simultanées. Dans ce scénario, l'optimiseur de requête peut décider d'utiliser un plan de requête qui appelle les index de table créés pour satisfaire la requête, en fonction de ressources limitées. Cela garantit un épuisement minimal du serveur par la requête. En exécutant la même requête à un autre moment avec plus de ressources, l'optimiseur de requêtes peut déterminer que la limitation des ressources n'est pas un problème. Dans ce cas, les index de table ne seraient pas utilisés et l'optimiseur de requêtes autoriserait le chargement complet de la table dans la mémoire du serveur.