Maison  >  Article  >  base de données  >  Analyse des instructions MINUS, INTERSECT et UNION ALL des instructions SQL

Analyse des instructions MINUS, INTERSECT et UNION ALL des instructions SQL

一个新手
一个新手original
2017-10-17 10:10:331830parcourir

Trois mots-clés dans l'instruction SQL : MINUS (soustraction), INTERSECT (intersection) et UNION ALL (union);

Tout le monde aurait dû apprendre la notion d'ensembles au collège, je n'entrerai donc pas dans les détails. Ces trois mots-clés sont principalement utilisés pour opérer sur les résultats des requêtes de la base de données, tout comme leur signification chinoise : deux requêtes, <.>MOINS consiste à soustraire le deuxième résultat de la requête du premier résultat de la requête. S'il y a une intersection, soustrayez la partie de l'intersection ; sinon, il n'y a aucune différence par rapport au premier résultat de la requête. deux L'intersection des résultats de la requête, UNION ALL est l'union de deux requêtes

Bien que la même fonction ; Il peut être implémenté avec de simples instructions SQL, mais la différence de performances est très grande. Quelqu'un a fait des expériences : made_order a un total de 230 000 enregistrements, charge_detail a un total de 170 000 enregistrements :

La différence de performances. est 15,956 fois ! Par conséquent, lorsqu'on rencontre ce genre de problème, il est préférable d'utiliser MINUS, INTERSECT et UNION ALL pour résoudre le problème, sinon, face à des millions de requêtes de données qui peuvent être vues partout dans le monde. affaire, le serveur de base de données ne sera pas battu à mort par nous ?

    SELECT order_id FROM made_order
  MINUS
  SELECT order_id FROM charge_detail
耗时:1.14 sec
  
  SELECT a.order_id FROM made_order a
   WHERE a.order_id NOT exists (
     SELECT order_id
     FROM charge_detail
     WHERE order_id = a.order_id
   )
耗时:18.19 sec

PS : Lors de l'application de la soustraction, de l'intersection et de l'addition de deux ensembles, il y a des exigences strictes : 1. Les champs des deux ensembles doit être clair (l'utilisation de * ne fonctionnera pas, une erreur sera signalée) ; 2. Type de champ Identique à la commande (les noms peuvent être différents), par exemple : le champ 1 de l'ensemble 1 est NUMBER, le champ 2 est VARCHAR, alors le champ 1 de l'ensemble 2 doit également être NUMBER et le champ 2 doit être VARCHAR 3. Ne peut pas être trié, si vous souhaitez trier les résultats, vous pouvez ajouter une autre requête à l'extérieur après l'opération d'ensemble, puis trier Par exemple. l'exemple précédent peut être remplacé par :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn