Delphi-PRAXiS :: Das Forum für Fragen zu Delphi
Das Experten Forum für Delphi Programmierer
Hilfe für Borland Delphi gibts es hier im Forum
Delphi Quelltexte und Source Codes
 
Delphi-PRAXiS :: Foren-ÜbersichtForen-Übersicht Delphi-PRAXiS Modul-ÜbersichtSite-Map Delphi-PRAXiS durchsuchenSuchen Delphi-PRAXiS Code-LibraryCode-Library Jetzt registrieren!Registrieren Login  
   
 
0
 
MySQl-Query läuft "ewig"
Ein Thema von dispy.

Vorheriges Thema anzeigen  |  Nächstes Thema anzeigen
Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
Delphi-PRAXiS Forum - Übersicht -> Datenbanken
Seite 1 von 2   [ 28 Beiträge ]  Gehe zu Seite 1, 2  Weiter
 
 Autor 
 Nachricht 
 
dispy #1|Beitrag #912037Verfasst am: 03.07.2008, 22:06      Titel: MySQl-Query läuft "ewig" Antworten mit Zitat
Mitglied
Status: offline
Beiträge: 24
angemeldet: 14.09.2006


Sprache: PHP
Datenbank: MySQl, Version: 5, Zugriff über: ganz normoal :)

Moin,

hab meinen Account mal reaktiviert Smile

Ich hab jetzt schon in 2 Foren gefragt, hoffe, dass ihr evt. eine Lösung findet Smile

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: zusammenfalten | markieren
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


Strukturen der Tabellen:
Zitat:

CREATE TABLE IF NOT EXISTS `de12_tribe` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL default '',
`ally` int(11) NOT NULL,
`villages` int(5) NOT NULL,
`points` int(11) NOT NULL,
`rank` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `de12_conquer` (
`villageid` int(11) NOT NULL,
`timestamp` int(11) NOT NULL,
`new_owner` int(11) NOT NULL,
`old_owner` int(11) NOT NULL,
KEY `villageid` (`villageid`),
KEY `timestamp` (`timestamp`),
KEY `new_owner` (`new_owner`),
KEY `old_owner` (`old_owner`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Und jetzt wirds richtig interessant: Folgender Query funktioniert nämlich:
SQL-Code: markieren
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


Also nur ein INNER JOIN auf die gleiche Tabelle mehr und der ganze Query braucht ewig..... ??

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: markieren
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)


Bin echt ratlos und zwei andere Foren waren das auch -ich hoffe ich kann das Proble mit eurer Hilfe endlich lösen Smile

Vielen DAnk im Voraus !

MfG
dispy

Computer sind eben nur so schlau wie ihre Programmierer...
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
alzaimar #2|Beitrag #912040Verfasst am: 03.07.2008, 22:10      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
sehr aktives Mitglied
Alter: 45
Status: offline
Beiträge: 3.220
angemeldet: 06.05.2005
Wohnort: Berlin
Delphi 2006 Architect

1. Indexiere mal alle Felder, die an einem JOIN beteiligt sind.
2. Kann MySQL temporäre Tabellen? Dann mach das in zwei Schritten

Nach dem Spiel ist vor dem Spiel.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
dispy #3|Beitrag #912041Verfasst am: 03.07.2008, 22:12      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
Mitglied
Status: offline
Beiträge: 24
angemeldet: 14.09.2006


alzaimar hat folgendes geschrieben:
1. Indexiere mal alle Felder, die an einem JOIN beteiligt sind.
2. Kann MySQL temporäre Tabellen? Dann mach das in zwei Schritten


Ja, kann es: Aber für jeden Query ne temp anzulegen wäre bisschen extrem aufwändig oder? Das mit vollen Indexieren mach ich mal ^^

MfG
dispy

Computer sind eben nur so schlau wie ihre Programmierer...
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
sx2008 #4|Beitrag #912074Verfasst am: 03.07.2008, 23:41      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
sehr aktives Mitglied
Status: offline
Beiträge: 226
angemeldet: 16.02.2008
Delphi 2007 Professional

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
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
alzaimar #5|Beitrag #912119Verfasst am: 04.07.2008, 06:54      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
sehr aktives Mitglied
Alter: 45
Status: offline
Beiträge: 3.220
angemeldet: 06.05.2005
Wohnort: Berlin
Delphi 2006 Architect

dispy hat folgendes geschrieben:
alzaimar hat folgendes geschrieben:
...2. Kann MySQL temporäre Tabellen? Dann mach das in zwei Schritten
Ja, kann es: Aber für jeden Query ne temp anzulegen wäre bisschen extrem aufwändig oder?
Da hast Du natürlich Recht. Daher ist das Punkt 2. Wenn Punkt 1 nicht funktioniert, bleibt Dir aber -außer mehr RAM- nichts Anderes übrig...

Nach dem Spiel ist vor dem Spiel.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
franktron #6|Beitrag #912135Verfasst am: 04.07.2008, 08:47      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
Mitglied
Alter: 34
Status: offline
Beiträge: 778
angemeldet: 11.11.2003
Wohnort: Oldenburg
Delphi 2006 Professional

Der Fehler ist ganz einfach de12_conquer hat keine Primarindex das mag MySQL garnicht
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
alzaimar #7|Beitrag #912136Verfasst am: 04.07.2008, 08:51      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
sehr aktives Mitglied
Alter: 45
Status: offline
Beiträge: 3.220
angemeldet: 06.05.2005
Wohnort: Berlin
Delphi 2006 Architect

Wieso funktioniert dann die zweite Query?

Nach dem Spiel ist vor dem Spiel.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
franktron #8|Beitrag #912138Verfasst am: 04.07.2008, 09:02      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
Mitglied
Alter: 34
Status: offline
Beiträge: 778
angemeldet: 11.11.2003
Wohnort: Oldenburg
Delphi 2006 Professional

alzaimar hat folgendes geschrieben:
Wieso funktioniert dann die zweite Query?

Gute Frage. Aber in der MySQL Doku steht das man immer ein PI habe sollte

OHHHH was dis Button do
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
alzaimar #9|Beitrag #912142Verfasst am: 04.07.2008, 09:07      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
sehr aktives Mitglied
Alter: 45
Status: offline
Beiträge: 3.220
angemeldet: 06.05.2005
Wohnort: Berlin
Delphi 2006 Architect

[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]

Nach dem Spiel ist vor dem Spiel.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
dispy #10|Beitrag #912307Verfasst am: 04.07.2008, 15:27      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
Mitglied
Status: offline
Beiträge: 24
angemeldet: 14.09.2006


alzaimar hat folgendes geschrieben:
[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]


Das ist leider nicht möglich.... sonst hätte ich das schon gemacht ^^

Ich habe alle Felder die beteiligt sind nun indexiert- trotzdem lädt der Query ewig -.-
Habt ihr noch weitere Ideen ?

MfG
dispy

Computer sind eben nur so schlau wie ihre Programmierer...

 Zuletzt bearbeitet von dispy am 04.07.2008, 15:32, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
franktron #11|Beitrag #912311Verfasst am: 04.07.2008, 15:37      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
Mitglied
Alter: 34
Status: offline
Beiträge: 778
angemeldet: 11.11.2003
Wohnort: Oldenburg
Delphi 2006 Professional

Mach doch einen Autoinc PI so mach ich das immer

OHHHH was dis Button do
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
dispy #12|Beitrag #912313Verfasst am: 04.07.2008, 15:42      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
Mitglied
Status: offline
Beiträge: 24
angemeldet: 14.09.2006


Was ist ein Autoinc PI ? o.O

Computer sind eben nur so schlau wie ihre Programmierer...
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
DeddyH #13|Beitrag #912314Verfasst am: 04.07.2008, 15:43      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
"Rüsselmops" ;-)
Alter: 42
Status: offline
Beiträge: 6.654
angemeldet: 17.09.2006
Wohnort: Schweina/Thüringen
Delphi 2007 Professional

Das ist ein künstlicher Schlüssel, der automatisch inkrementiert wird.

10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
dispy #14|Beitrag #912317Verfasst am: 04.07.2008, 15:48      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
Mitglied
Status: offline
Beiträge: 24
angemeldet: 14.09.2006


das bringt doch gar nix... der wird doch nicht abgefragt..
MfG
dispy

Computer sind eben nur so schlau wie ihre Programmierer...
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
franktron #15|Beitrag #912339Verfasst am: 04.07.2008, 16:21      Titel: Re: MySQl-Query läuft "ewig" Antworten mit Zitat
Mitglied
Alter: 34
Status: offline
Beiträge: 778
angemeldet: 11.11.2003
Wohnort: Oldenburg
Delphi 2006 Professional

Das ist egal mach es doch einfach mal und teste es.

OHHHH was dis Button do
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
Anzeige-Optionen:    
 
Delphi-PRAXiS Forum - Übersicht -> Datenbanken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 2   [ 28 Beiträge ]  Gehe zu Seite 1, 2  Weiter
 
  Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
   
Gehe zu:  
Du darfst keine Beiträge in dieses Forum schreiben.
Du darfst auf Beiträge in diesem Forum nicht antworten.
Du darfst Deine Beiträge in diesem Forum nicht bearbeiten.
Du darfst Deine Beiträge in diesem Forum nicht löschen.
Du darfst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten.
Du kannst Dateien in diesem Forum nicht herunterladen.


Impressum / Kontakt
Allgemeine Geschäftsbedingungen
Verhaltenskodex & FAQ

Delphi-PRAXiS :: Das Forum für Delphi-Programmierer
Das Experten Forum für Delphi ProgrammiererHilfe für Borland Delphi gibts es hier im Forum