Mailinglisten-Archive |
Hallo zusammen, mir ist gestern ein sehr merkwürdiges verhalten beim GROUP BY aufgefallen. Btw. es handelt sich um Version 4.0.18 unter Win32. Folgende Query wird ausgeführt: select wv.ktypnr ktypnr,wp1.nr HA_nr,wp1.shortdescription HA_text,d.shortname VA,wp2.nr VA_nr,wp2.shortdescription VA_text from workassociation wa left join direction d on d.direction_id=wa.direction_id left join workvalue wv on wa.workvalue_id=wv.workvalue_id left join workprocess wp1 on wp1.workprocess_id=wv.workprocess_id left join workprocess wp2 on wp2.workprocess_id=wa.workprocess_id group by wa.workvalue_id,wa.workprocess_id,wa.direction_id having count(wa.workassociation_id)>1 workassociation: 22.000.000 Datensätze direction: 4 Datensätze workvalue: 15.800.000 Datensätze workprocess: 27.000 Datensätze Zum Datenmodell muss man sagen das immer Tabellenname_ID der PK ist. Wie man einfach sehen kann ist das ganze ein Fulltabelscan über die workassociation mit einem GROUP BY. Nebenbei werden paar Infos dazugejoint die aber nur lookups sind da gegen PK der gejointen tabelle. So zeigt es auch explain. Was nun passiert ist ein table handler error 26 - sprich - out of diskspace. Nun ist auf der Maschine Platz genug (rund 10 GB). Also habe ich mal beobachtet wie die Temp-Tabelle bei der Query wächst. Wenn ich mit meinen Berechnungen nicht danebenliege scheint der aus VARCHAR Spalten CHAR Spalten zu machen und damit die Temp-Tabelle sinnlos aufzublasen. Kann das sein ? zur Info: wp1.nr - varchar(10) wp1.shortdescription - varchar(255) d.shortname - char(1) wp2.nr - varchar(10) wp2.shortdescription - varchar(255) Nach durchschnittlichen Datenmengen müssten bei Varchar-Feldern hier rund 3 GB Daten entstehen da die durchschnittlichen Länge in den Shortdescriptions bei 37 liegt. 145 Byte * 22.000.000 = 3 GB Hat irgendjemand ne Idee ob ich mit meiner Vermutung richtig liege? Und wenn ja warum macht MySQL das so "blöd"? Gruß, Andreas Müller +--------------------------------------------------+ | Nur zwei Dinge sind unendlich: | | Das Weltall und die menschliche Dummheit. | | Beim Weltall bin ich mir aber nicht ganz sicher. | | | | ~Albert Einstein~ | +--------------------------------------------------+ -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive