sql >> Database >  >> RDS >> Mysql

Mysql Unie tijd V.S. afzonderlijke zoekopdracht één voor één

De UNION operator vereist dat dubbele tupels (rijen) uit de resultaatset worden verwijderd voordat rijen worden geretourneerd. Dat is in feite een SORT UNIEKE operatie. Dat is relatief goedkoop voor kleine resultaatsets, maar voor grote sets kan het veel tijd kosten op de server (d.w.z. lang duren.)

In theorie, het combineren van de zoekopdrachten met een UNION ALL operator in plaats van een UNION operator zou het snelst zijn, omdat het (n -1) retourvluchten naar de database, versus het afzonderlijk uitvoeren van query's. Maar voor grote waarden van n , je loopt tegen praktische limieten aan wat betreft de grootte van de SQL-tekst (max. pakketgrootte).

Gezien de keuze tussen UNION operator en afzonderlijke zoekopdrachten, voor een grote resultatenset zullen de afzonderlijke zoekopdrachten minder resource-intensief zijn aan de serverkant.

Kortom, het is echt een afweging tussen het zware werk voor elke vraag en het zware werk van een UNIEKE SORTERING-operatie.



  1. BEREKEN PERCENTAGE IN SQL per groep

  2. hoe gebruik je check constraint in oracle?

  3. Is LAST_INSERT_ID() in een transactie betrouwbaar?

  4. MariaDB JSON_LENGTH() uitgelegd