sql >> Database teknologi >  >> RDS >> Mysql

At kombinere SELECT DISTINCT med UNION DISTINCT i MySQL - nogen effekt?

Du skal tjekke udførelsesplanerne. Jeg ville dog forvente, at udførelsesplanerne er anderledes - eller i det mindste burde de være det under nogle omstændigheder.

Den første forespørgsel:

SELECT DISTINCT a, b, c FROM table1
UNION DISTINCT
SELECT DISTINCT a, b, c FROM table2

kan nemt drage fordel af indekser på table1(a, b, c) og table2(a, b, c) før laver den sidste UNION . Dette skulle fremskynde den endelige sammenslutning ved at reducere størrelsen af ​​dataene. Den anden forespørgsel har ikke denne fordel.

Faktisk ville den mest effektive måde at skrive denne forespørgsel sandsynligvis være at have de to indekser og bruge:

SELECT DISTINCT a, b, c FROM table1 t1
UNION ALL
SELECT DISTINCT a, b, c
FROM table2 t2
WHERE NOT EXISTS (SELECT 1 FROM table1 t1 WHERE t2.a = t1.a and t2.b = t1.b and t2.c = t1.c)

Dette er næsten identisk, selvom det kan håndtere NULL værdier i den anden tabel lidt anderledes.




  1. Er sammensatte unikke nøgler indekseret i MySQL? - DBMS

  2. SÆRLIGE en kolonne i en database

  3. Sådan indsætter du et tidsstempel i Oracle i et bestemt format

  4. Hvordan gemmer man en række bytes i Oracle?