News information : Conditions d'adhésion déséquilibrées dans les requêtes de base de données

Le SGBDR ou les systèmes de gestion de bases de données relationnelles utilisent des requêtes pour récupérer les données de la base de données. Les requêtes peuvent être construites sur plusieurs tables à l'aide de jointures équivalentes ou inégales. Les questions peuvent également spécifier où les conditions, où les données seront obtenues selon certaines conditions, telles que Sélectionner nom_étudiant des étudiants, où place_of_residence = "Chennai". Les conditions de fusion sont spécifiées comme Sélectionnez a.customer_name, b.order_id du client a, order b où a.customer_id = b.customer_id.

Dans le cas ci-dessus, il existe une union entre les deux tables client et la commande. Avant l'exécution d'une requête, le moteur SQL calcule un plan d'exécution. Le plan d'exécution des requêtes est une séquence d'étapes définies par l'optimiseur de requêtes. Ces étapes produiront une série d'opérations qui entraîneront le coût d'exécution de la requête le plus bas. Dans des situations complexes où des requêtes sont créées entre plusieurs tables spécifiant de nombreuses conditions de requête, une ou deux conditions de jointure manquantes peuvent entraîner des durées de requête étendues si la base de données contient de grands volumes de données.

Une union de deux tables sans condition d'union n'est qu'un produit croisé de deux groupes. Si le tableau A a 10 000 lignes et le tableau B a 5 000 lignes, un produit croisé de deux tableaux donnera 5 000 000 000 entrées. Alors que si une condition de fusion est entrée, le jeu de résultats contiendra 10 000 lignes ou 5 000 lignes dans l'espace de recherche résultant. Par exemple, si une requête contient 10 tables et des produits croisés de deux ou trois tables prises en même temps, et si l'expression de requête contient 20 à 30 jointures, les conditions de jointure 3 ou 4 peuvent être perdues en raison d'une négligence ou d'une erreur. Cela peut être le cas dans le cas de requêtes SQL qui fonctionnent dans de grandes unités de production ou de production qui effectuent un traitement de données volumineux. La taille de chaque table est très grande, tout comme le nombre de tables.

Un concepteur peut concevoir une requête pour enregistrer un processus d'actualisation dans une maison de production dans laquelle les données de ventes réelles par rapport aux projections sont téléchargées dans la base de données. En raison de la complexité de la base de données, une seule requête peut utiliser 20 tables contenant plus de 100 000 entrées de table en moyenne. La requête peut utiliser de nombreuses jointures et si, en raison d'un accident, certaines conditions de jointure sont ignorées, la requête nécessitera dans un espace de 10 enregistrements de puissance 20 au lieu de seulement 10 enregistrements de puissance 5. Cela entraînerait du temps exécution de requête étendue, parfois un seul programme contenant une telle requête de manière incorrecte peut s'exécuter pendant 20 heures supplémentaires sans terminer les mises à jour. Mais en identifiant et en ajoutant des conditions d'agrégation manquantes telles que table3.column3 = table4.column7 ou table7.column2 = table1.column9 etc., les requêtes de requête peuvent être effectuées pour fonctionner dans un délai acceptable.