MySQL Abfrage - zählen
Kalle_B
- datenbank
0 Tom0 Ilja0 Kalle_B
0 Nachtrag
Kalle_B0 Nachtrag 2
Kalle_B0 Tom0 Maxx0 Oracle
Kalle_B0 Maxx
0 Ilja
Hallöle,
habe eine DB-Tabelle mit Firmen und ihren Mitarbeitern, die sich durch das Feld ma unterscheiden. Das kann den Wert 1 .. 6 haben:
Firma ma
----- --
AEG 1
AEG 2
BFG 1
BFG 2
BFG 3
...
Jetzt möchte ich zählen, wieviele Mitarbeiter 1 es gibt, wie viele Mitarbeiter 2 usw:
1 2 3 4 5 6
--------- -- -- -- -- -- --
anwesened 59 16 9 2 0 0
Wie zählt man Inhalte eines Feldes? Ich habe bisher 6 getrennte SQL- Kommandos abgesetzt, muss aber an der Performance schrauben.
Lieben Gruß, Kalle
Hello,
Wie zählt man Inhalte eines Feldes? Ich habe bisher 6 getrennte SQL- Kommandos abgesetzt, muss aber an der Performance schrauben.
Über das Feld gruppieren und zählen
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Über das Feld gruppieren und zählen
Logisch. *brettvormkopf*
Danke.
yo,
habe eine DB-Tabelle mit Firmen und ihren Mitarbeitern, die sich durch das Feld ma unterscheiden. Das kann den Wert 1 .. 6 haben:
SELECT ma, COUNT(*) AS Anzahl
FROM tabellen_namen
GROUP BY ma
das ist die einfache version, allerdings wirst du so keine einträge bekommen, die als Anzahl 0 haben (MA 5 und 6). dafür ist wiederum ein OUTER JOIN nötig, wobei meine frage ist, gibt es den noch eine zweite tabelle, wo alle mitarbeiter drinne stehen ?
Ilja
Hallöchen,
SELECT ma, COUNT(*) AS Anzahl
FROM tabellen_namen
GROUP BY madas ist die einfache version, allerdings wirst du so keine einträge bekommen, die als Anzahl 0 haben (MA 5 und 6). dafür ist wiederum ein OUTER JOIN nötig, wobei meine frage ist, gibt es den noch eine zweite tabelle, wo alle mitarbeiter drinne stehen ?
Ohhh ja, die Wirklichkeit ist weitaus komplizierter. Aber der AHA- Effekt ist GROUP BY. Danke.
Kalle
Danke für eure Tipps,
... muss aber an der Performance schrauben.
Der GROUP BY hat nicht die Geschwindigkeit gebracht, aber meine Denk- Blockade beseitigt: Habe die WHERE- Klausel erweitert. Nun nutzt MySQL einen bereits vorhandenen Key und der Suchlauf in phpMyAdmin ging von 8,.. sec auf 0,04 sec runter!
So macht Datenbank wieder Spaß.
Lieben Gruß, Kalle
Habe die WHERE- Klausel erweitert. Nun nutzt MySQL einen bereits vorhandenen Key und der Suchlauf in phpMyAdmin ging von 8,.. sec auf 0,04 sec runter!
So macht Datenbank wieder Spaß.
Nochmal nachgedacht:
Die betreffende, mit LEFT JOIN dazugelinkte Tabelle hat nur 6.200 Einträge. Das können auch locker 20.000 werden. Und OHNE Key braucht er dafür 8 sec mehr?
MySQL ist wohl nicht gerade der Porsche unter den Datenbanken?
Aber ich will ja nicht meckern. Besser ein kostengünstiger TURBO- Trabbi (MySQL mit Keys) als ein teurer roter Ferrari (Oracle?)
Lieben Gruß, Kalle
Hello,
das hängt dann irgendwann wirklich von der gewählten Speichernutzung für MySQL ab!
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo Kalle,
Aber ich will ja nicht meckern. Besser ein kostengünstiger TURBO- Trabbi (MySQL mit Keys) als ein teurer roter Ferrari (Oracle?)
so teuer ist der Ferrari auch nicht. Im Gegenteil ... hast du schon die 10g Express Edition ausprobiert?
Viele Grüße,
Jochen
Hallo Jochen,
so teuer ist der Ferrari auch nicht. Im Gegenteil ... hast du schon die 10g Express Edition ausprobiert?
Habe im April 2005 10g_win32_db.zip heruntergeladen und auf dem Laptop installiert. Doch ein erhoffter Auftrag kam nicht zustande, der Laptop war saulangsam und die Platte voll.
Eine Online- Schulung verging damit, dass ich per Mail- Kontakt die fehlerhafte Verbindung "reparierte", während ich die Telefonkonferenz mit halbem Ohr verfolgte. Als es endlich klappte, war der Termin zuende.
Habe ich also wieder runtergeschmissen (auf CD gebrannt).
Was ist jetzt die 10g Express Edition? Oracle light? Habe ein gewisses Interesse, bei Oracle am Ball zu bleiben, meine Kenntnisse verblassen langsam.
Lieben Gruß, Kalle
Hallo Kalle,
Was ist jetzt die 10g Express Edition? Oracle light? Habe ein gewisses Interesse, bei Oracle am Ball zu bleiben, meine Kenntnisse verblassen langsam.
ja, genau so geht es mir auch. So langsam werde ich zu alt für den Job.
10g Express Edition Ich bin allerdings noch nicht zum installieren gekommen.
Viele Grüße,
Jochen
yo,
MySQL ist wohl nicht gerade der Porsche unter den Datenbanken?
das hat nichts mit mysql zu tun. wenn bei einem join kein index benutzt wird, dann wird jedes dbms stöhnen. da kommen sehr leicht viele vergleiche vor.
20.000 x 20.000 datensätze in beiden tabellen gleich 400.000.000 vergleiche.....
tuning ist eines der kompliziertesten aktionen bei datenbanken, alleine schon die ausswahl, welche der beiden tabellen die treibende ist, kann riesen-unterschiede bewirken.
das beste ist, du schaust dir mal in ruhe den ausführungsplan aus, um zu sehen, welche der vorhandenen indezies benutzt werden.
Ilja