Rolf b: Frage zu mysql #1104

Beitrag lesen

max_join_size gibt an, wieviele Zeilen ein JOIN produziert. Wenn Du 3 Tabellen joinst, und jede 1000 Rows hat, gibt das im ungünstigsten Fall eine max_join_size von einer Milliarde Rows. Welcher Wert in deine(m|n) Server(n?) eingestellt ist, kannst Du in phpMyAdmin finden, wenn Du auf die Server-Übersicht gehst und da den Reiter "Variablen" auswählst. Wenn da 1000 steht, ist es klar zu wenig, wenn da in etwa $$18\cdot10^{18}$$ steht, ist es klar zu viel (das wäre uint64.maxvalue).

Du solltest Dir deine Query anschauen und versuchen abzuschätzen, wie viele Rows auf Grund der Join-Bedingungen entstehen. Das kann Dir hier keiner abnehmen, weil wir dein Datenmodell und deine Inhalte nicht kennen.

Wenn MySQL dich auf diese Weise warnt, hat entweder jemand die MySQL Konfiguration geändert und die max_join_size reduziert, oder es wurde ein Index gedroppt, so dass statt eines Index-Seek oder Index-Scan nun ein Table-Scan durchgeführt werden muss. Vielleicht hast Du auch eine vermeintliche Kleinigkeit am Statement geändert, so dass nun kein Index-Scan mehr möglich ist.

Also: meditiere über dein Statement - kannst es uns auch gern zeigen - und lass Dir vom SQL Server den Zugriffspfad erklären (EXPLAIN).

Rolf

Rolf