![]() |
Datenbank: MySQl • Version: 5 • Zugriff über: ganz normoal :)
MySQl-Query läuft "ewig"
Moin,
hab meinen Account mal reaktiviert :) Ich hab jetzt schon in 2 Foren gefragt, hoffe, dass ihr evt. eine Lösung findet :) Problem: Der (folgende) Query läuft "ewig" durch -nach 10 min bekomme ich dann die Meldung "MySQl-Server has gone away". Ich =>ratlos, da der Query wirklich gut aussieht.
SQL-Code:
Strukturen der Tabellen:
SELECT
conquer.timestamp AS time, conquer.new_owner AS new_owner_id FROM de12_conquer AS conquer INNER JOIN de12_tribe AS conqueror ON conqueror.id=conquer.new_owner INNER JOIN de12_tribe AS loser ON loser.id=conquer.old_owner WHERE (conquer.timestamp>0 && conquer.timestamp<1213647029734) AND (conqueror.ally=37038 OR loser.ally=37038 ) ORDER BY conquer.timestamp DESC LIMIT 50 Zitat:
SQL-Code:
Also nur ein INNER JOIN auf die gleiche Tabelle mehr und der ganze Query braucht ewig..... ??
SELECT
conquer.timestamp AS time, conquer.new_owner AS new_owner_id FROM de12_conquer AS conquer INNER JOIN de12_tribe AS conqueror ON conqueror.id=conquer.new_owner WHERE (conquer.timestamp>0 && conquer.timestamp<1213647029734) AND (conqueror.ally=37038 ) ORDER BY conquer.timestamp DESC LIMIT 50 Ich habe statt INNER JOIN auch schon LEFT und RIGHT JOIN probiert- das funzt auch nicht. Einträge in de12_conquer:625,687 de12_tribe: 7,616 MySQL-Explain
SQL-Code:
Bin echt ratlos und zwei andere Foren waren das auch -ich hoffe ich kann das Proble mit eurer Hilfe endlich lösen :)
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE loser ALL PRIMARY NULL NULL NULL 7616 Using temporary; Using filesort 1 SIMPLE conquer ref timestamp,new_owner,old_owner old_owner 4 dispy.loser.id 8 Using where 1 SIMPLE conqueror ALL PRIMARY NULL NULL NULL 7616 Range checked for each record (index map: 0x1) Vielen DAnk im Voraus ! MfG dispy |
Re: MySQl-Query läuft "ewig"
1. Indexiere mal alle Felder, die an einem JOIN beteiligt sind.
2. Kann MySQL temporäre Tabellen? Dann mach das in zwei Schritten |
Re: MySQl-Query läuft "ewig"
Zitat:
MfG dispy |
Re: MySQl-Query läuft "ewig"
Folgende Felder sollten indiziert werden:
de12_conquer.new_owner de12_conquer.old_owner de12_conquer.timestamp // sollte entscheidenden Betrag zum Sortieren liefern de12_tribe.id // index nur nötig, wenn id nicht eh schon Primärschlüssel ist de12_tribe.ally |
Re: MySQl-Query läuft "ewig"
Zitat:
|
Re: MySQl-Query läuft "ewig"
Der Fehler ist ganz einfach de12_conquer hat keine Primarindex das mag MySQL garnicht
|
Re: MySQl-Query läuft "ewig"
Wieso funktioniert dann die zweite Query?
|
Re: MySQl-Query läuft "ewig"
Zitat:
|
Re: MySQl-Query läuft "ewig"
[OT] PK / PI sind grundsätzlich zu vergeben, einfach damit jeder Datensatz eindeutig identifiziert werden kann. Ohne PK hast Du keine Möglichkeit, bei zwei identischen Datensätzen nur einen zu löschen, ohne die Tabelle komplett neu zu bauen. [/OT]
|
Re: MySQl-Query läuft "ewig"
Zitat:
Ich habe alle Felder die beteiligt sind nun indexiert- trotzdem lädt der Query ewig -.- Habt ihr noch weitere Ideen ? MfG dispy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz