SQL: curiosità sul GROUP BY e sul DISTINCT

Studiando i piani di esecuzione di alcune query mi sono imbattuto in un GROUP BY senza molto senso, simile a questo:

SELECT IDPRODOTTO
FROM ORDINI2
GROUP BY IDPRODOTTO

Dico senza molto senso perché in realtà equivale a

SELECT DISTINCT(IDPRODOTTO)
FROM ORDINI2

SQLServer però non la manda a dire, e sa che le due query si equivalgono, ed infatti le risolve alla stessa maniera:

distinct_sort

Ovvero utilizzando un “Distinct Sort” per entrambi.

Da notare, che nel momento in cui la tabella arriva a contenere una grande mole di dati, SQLServer cambia

strategia, e comincia ad utilizzare un algoritmo ‘Hash Match’:
hash

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>