Nun, vielleicht bin ich zu alt und ich möchte das folgende verstehen.Warum eine Union ist schneller als eine Gruppe von
Abfrage 1.
select count(*), gender from customer
group by gender
Abfrage 2.
select count(*), 'M' from customer
where gender ='M'
union
select count(*), 'F' from customer
where gender ='F'
die erste Abfrage ist einfacher, aber aus irgendeinem Grund im Profiler, wenn ich beide zur gleichen Zeit ausführen, heißt es, dass Abfrage 2 verwendet 39% der Zeit und Abfrage 1 61%.
Ich möchte den Grund verstehen, vielleicht muss ich alle meine Fragen neu schreiben.
Nur eine Vermutung: die zweite Abfrage hat eigentlich keine Aggregation, und kein Zustand wird beibehalten, um die Anzahl zu berechnen (es gibt nur die Anzahl der übereinstimmenden Zeilen für 'count (*)') – lanzz
was meinst du 'at zur gleichen Zeit? – Sebas
Ich nehme an, Sie haben nur 2 Geschlechter und jeder hat ein Geschlecht zugewiesen, anstatt dass einige "NULL" sind? Was ist, wenn Sie "UNION ALL" versuchen? Verbessert das die zweite noch mehr? Auch was RDBMS und wie sehen die Ausführungspläne aus? Auch die relativen Kosten in SQL Server-Ausführungsplänen spiegeln nicht unbedingt die tatsächliche Leistung wider, wenn Sie die beiden Abfragen vergleichen. –