yo,
gemeckert haben ja schon Vinz und Wahsaga über dein verhalten und ich finde auch zurecht. aber um die fronten wieder ein wenig aufzulockern, kann man ja noch mal versuchen, ein positives ergebnis herauszuarbeiten. vorher aber noch ein paar anmerkungen.
-
eine subselect, der in der select klausel angezeigt werden soll, darf nur einen wert zurück liefern und zwar horizontal und vertikal, period.
-
eine datenmenge von 400.000 datensätze ist kein grosser datenbestand, period.
-
deine zeitangaben sind nicht vergleichbar, weil du bei der einen anweisung eine limit klausel benutzt hast, sprich die ergebnismenge dadurch reduziert hast und somit auch die ausführungszeit. Beim zählen (egal ob mit funktion oder count) muss er aber die gesamte menge durchgehen. das ist ein ganz erheblicher unterschied.
-
in der einen LEFT JOIN anweisung [Link:http://forum.de.selfhtml.org/?t=152231&m=990251], fehlt schon mal die join bedingung. insofern ist mir noch nicht ganz klar, ob du die von dir so abgelehnten joins richtig angewandt hast. letztlich sind die joins wohl das mittel, die dich zum ziel führen.
-
indexe ist ein wichtiges thema, vor allem wenn die where bedingung komplez ist, sprich mehrere kriterien gleichzeitig verglichen werden müssen. da gibt es sicherlich noch viel spielraum.
es gibt also noch vieles zu klären, um eine gute lösung zu finden. und dabei ist die kompetenz der teilnehmer hier im forum das geringste problem.
mein vorschlag, mal unabhängig davon, wie man genau nun die select anweisung umsetzt, schreib doch einfach mal, wie deine betroffenen tabellen aufgebaut sind und welches ergebenis du genau daraus haben willst, am besten immer mit beispieldaten.
Ilja