phpbar.de logo

Mailinglisten-Archive

AW: Select zu komplex für mysql

AW: Select zu komplex für mysql

Andreas Müller mysql at universalware.de
Die Jul 28 23:14:39 CEST 2009


Hallo zusamme,

> naja, die vorschläge sind immer gleich:
> vernünftige indices setzen und ggf. per left join vorgeben, wie mysql verknüpfen soll. (so wie Du verknüpfst muss sich das mysql selbst überlegen. Das ist besser, als wenn man es falsch macht, aber wenn Du den Left join richtig machst, dann kannste MySQL da weiterhelfen.).
> wenn ich mir das anschaue:
> t1.base_size_q_size_key           = t40.q_size_key
> (nur als beispiel)
> sind das beides integer, die in t1 ist als index, die in t40 als primary key definiert?

dem kann ich nur zum Teil zustimmen. Zum einen ist left join kein "performanter ersatz" für einen inner join (nichts anderes ist das hier) in dem man mysql vorgibt wie er die query abarbeiten muss.

Der Optimizer von MySQL ist inzwischen so gut das es so gut wie nie vorkommt das man ihm ins Handwerk pfuschen muss. Und selbst wenn dann nicht durch den austausch der JOIN-Art sondern durch explizite Angabe welcher Index an welcher Relation zu verwenden ist.

Der einzige sinnvolle Schritt in dem Problem ist die Analyse des "explain". Danach müsste man die Index-Situation prüfen ob an allen sinnvollen und notwendigen stellen die richtigen Indizes vorhanden sind. Stimmt dann alles und "explain" liefert noch immer "Müll" oder die Abfrage ist immer noch langsam könnte es durchaus ein Fall für einen Bugreport werden - denn das was hier gemacht werden soll ist zwar viel von der Sache her aber sehr simpel und soetwas in der Art habe ich auch schon mit MySQL gemacht - ohne Probleme (oki das war damals auch ein Eigenkompilat wegen Tabellenanzahl in der Query)

Evtl. sollte man auch mal ein "ANALYSE" über die Tabellen schicken. Es kann schonmal vorkommen das die Indes Statistiken defekt sind und der Optimizer daraufhin etwas merkwürdige Vorschläge macht.

Kurz und gut: Ergebnis von EXPLAIN her, evtl. ein Dump der CREATE-Statements - dann sehen wir weiter.

Gruß,
Andreas

_______________________________________________
Allgemeine Infos zur Liste: http://www.4t2.com/mysql/
Verwaltung: https://lists.4t2.com/cgi-bin/mailman/listinfo/mysql-de

php::bar PHP Wiki   -   Listenarchive