für den einfachsten Fall, dass wir alle zu verweisen:verschiedene vs Gruppe, durch die besser
select id from mytbl
group by id
und
select distinct id from mytbl
wie wir wissen, sie erzeugen gleiche Abfrage-Plan, die in einigen wiederholt erwähnt worden Artikel wie Which is better: Distinct or Group By
In Bienenstock hat jedoch erstere nur eine Aufgabe zu reduzieren, während letztere viele hat.
Aus Experimenten habe ich festgestellt, dass die GROUP BY 10 + mal schneller als DISTINCT ist.
Sie sind anders.
Also, was ich gelernt habe, ist:
GROUP-BY ohnehin nicht schlechter als DISTINCT ist, und es ist manchmal besser.
Ich möchte wissen:
. Wenn diese Schlussfolgerung zutrifft.
. Wenn das stimmt, werde ich DISTINCT als einen Ansatz für logische Bequemlichkeit betrachten, aber warum nimmt DISTINCT nicht die bessere Implementierung von GROUP-BY?
. Wenn es falsch ist, wäre ich sehr gespannt auf seine anständige Verwendung unter Big-Data-Situation.
Vielen Dank !! :)
Die von Ihnen verknüpfte Frage bezieht sich speziell auf das Verhalten von MS SQL Server. Verschiedene Engines haben unterschiedliche Ansätze, verschiedene Optimierungen etc. Es gibt keinen Grund zu der Annahme, dass, nur weil "group by" und "distinct" in MS SQL (einer bestimmten Version) gleichwertig sind, dies auch für Hive gilt. Haben Sie EXPLAIN verwendet, um sich die tatsächlichen Ausführungspläne anzusehen? – Luaan
Danke. Ich nahm Ihren Ansatz und nutzte die vergangenen zwei Tage in die Abfragepläne meines SQL. Die interessante Sache ist, für den einfachen Fall wie oben, sind die Abfragepläne die gleichen (alle unter Verwendung von Gruppierung), aber unterschiedlich, wenn ich viele DISTINCT + UNION gegen GROUPBY + UNION setzen. – Chiron
Vielleicht hat das einen guten Grund, oder vielleicht ist es nur ein Versehen (anders ist es nicht mehr so weit verbreitet wie früher - es war früher der Go-to-Hack für schlecht designte DBs). Du könntest dies auf Hadoop/Hive's issue tracker posten oder so, aber du wirst wahrscheinlich immer noch damit rollen müssen. Es ist nicht immer offensichtlich, warum zwei ähnliche Anfragen unterschiedlich ausgeführt werden. – Luaan