Sven Rautenberg: (Oracle) SELECT geht, SELECT DISTINCT nicht. Arrrrgh!

Beitrag lesen

Moin!

SELECT DISTINCT products.*

Du wirfst dem DISTINCT alle Spalten der Tabelle vor, also auch die "beschreibung".
Also muß Oracle auch die Beschreibung-Spalte vergleichen, um Duplikate zu filtern.

Muß er das wirklich? Er sollte doch sicherlich klug genug sein nur den Primary Key ("id") zum Vergleich heranzuziehen.
Hmmm... mal nachforschen.

So ist DISTINCT nun mal definiert. Es filtert alle komplett identischen Zeilen bis auf eine aus dem Ergebnis heraus.

Das bedeutet: Man kann DISTINCT eigentlich nur dann anwenden, wenn man selektiv tatsächlich einzelne Spalten abfragt, bei denen es zu Duplikaten kommt. DISTINCT auf eine Tabelle anzuwenden, in der eine Spalte UNIQUE ist (oder zumindest den Anschein hat, wie bei IDs üblich), ist absolut sinnlos, weil DISTINCT nichts filtern kann - jede Ergebniszeile unterscheidet sich von jeder anderen Zeile ja mindestens in dieser ID.

- Sven Rautenberg

--
My sssignature, my preciousssss!