Alternative zu DISTINCT-Funktion
Gibt es einen besseren Weg, um alle unterschiedlichen Werte aus drei Spalten in einer Tabelle andere als die Verwendung der DISTINCT-Funktion? Ich habe auch versucht GROUP BY
, aber es scheint nicht zu sein jede erkennbare Unterschied in den Kosten.
SELECT DISTINCT Table1.Col1, Table2.Col1, Table1.Col3
FROM Table1
INNER JOIN Table2 ON Table1.FK = Table2.ID
WHERE Table1.Foo = 1865 AND Table2.Type = 1
- Es gibt keine
Table3
in der FROM-Klausel. - Was ist das Szenario hier? Warum sind Sie DISTINCTing die Daten?
- Stellt sich die Frage, warum Sie nicht wollen, um verschiedene Daten? Gibt es einen Grund, warum
DISTINCT
ist hier nicht vorhanden? - Behoben das Beispiel weglassen Table3 und beachten Sie, dass alle drei Spalten aus einer Tabelle.
- Ich kann verwenden Sie UNTERSCHIEDLICHE, ich möchte nur wissen, ob es eine bessere alternative.
- was meinst du damit alle drei Spalten aus einer Tabelle? Sie sind noch immer auf zwei Tabellen in Ihrem
SELECT
- Klausel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
GROUP BY
ist bestimmt für die Aggregatfunktion verwenden;DISTINCT
nur entfernt Duplikate (auf der Basis aller Werte in der Spalte matching auf einer pro-Zeilen-basis) von Sichtbarkeit.Wenn TABELLE2 ermöglicht doppelte Werte auf TABELLE1 Datensätze, verwenden Sie entweder option. Hängt von den Daten und dem, was Sie sehen wollen, aber man könnte eine Gruppe von & Aggregat-Funktion, um die höchsten (MAX) oder niedrigsten (mit MIN) Werte aus TABELLE2...
Nein, das ist, wie es gemacht wird.
Obwohl, Sie könnten versuchen:
Geschwindigkeit hängt von Ihren Daten.
Siehe auch Gruppe sql durch distinct versus
Table2.Type = 1
Bedingung, um die JOIN-Klausel wird keinen Unterschied in der Leistung.on
Klausel in join-und diewhere
Klausel betrifft nur die Ergebnisse für outer-joins, aber nicht für den inner-joins.Haben Sie versucht, erstellen Sie einen index auf die Felder, die Sie ausgewählt haben?
Den relativen Kosten der DISTINCT und GROUP BY Sinn machen. Eine Möglichkeit (und wahrscheinlich die Art und Weise ist es mit) der Verarbeitung der Daten, um die Zeilen zu Sortieren, indem Sie die Felder, die Sie bieten. Dann wird der Unterschied zwischen den beiden ist, dass VERSCHIEDENE überspringt Zeilen, die gleich der vorhergehenden Zeile, und GRUPPE geschieht durch ausführen einer Anzahl mit der gleichen Metrik der Gleichheit.
Nein, es gibt nicht, aber wenn Sie struggeling mit der Leistung auf diesem, möchten Sie vielleicht zu prüfen, Indizes. Wenn Sie weitere Informationen zu liefern, vielleicht können wir helfen, mit dieser
könnte man versuchen, die Verhältnisse in Ihrem 'wo' zu Ihr gesellt, obwohl ich erwarte, dass Sie analysiert werden, die gleichen.
Wenn Ihr versucht, um die Leistung zu erhöhen, fügen Sie einen index auf Table1.Foo und Tabelle2.Geben Sie