SQL-Abfrage verbessern

Status
Nicht offen für weitere Antworten.

Angel4585

Bekanntes Mitglied
Hallo,

ich programmiere zur Zeit ein Browsergame, genauer einen Fussballmanager.
Jetzt möchte ich das tägliche Training berechnen und habe dafür folgende Abfrage vorgesehen:

Code:
update players as p1 left outer join player_contracts as c1 on c1.player=p1.id and c1.ende=0 left outer join team_training as t1 on t1.team=c1.team SET
   p1.skill1=p1.skill1*t1.t1skill1,
   p1.skill2=p1.skill2*t1.t1skill2,
   p1.skill3=p1.skill3*t1.t1skill3,
   p1.skill4=p1.skill4*t1.t1skill4,
   p1.skill5=p1.skill5*t1.t1skill5,
   p1.skill6=p1.skill6*t1.t1skill6

Das Problem ist jetz: Die Abfrage hat nach 5 Minuten gerademal 7.000 Datensätze durch, von insgesamt ~40.000
Also irgendwo muss ich denk ich was übersehen, das kann nicht so lange dauern.

die Tabelle players hat ~40.000 DS,
die Tabelle player_contracts aktuell genausoviele, später aber immer mehr als die Players tabelle,
die Tabelle team_trainings hat ~4.000

Also was ist an der Abfrage verkehrt?

Ich verwende übrigens PHP&MySQL
 

Angel4585

Bekanntes Mitglied
wo wären die denn hier angebracht?

Beim Absenden des Beitrags hier kam grad folgender Fehler:

Ran into problems sending Mail. Response: 535 Authentication failed for admin@java-forum.org - authsql/login - wrong password

DEBUG MODE

Line : 40
File : /www0126/www.java-forum.org/de/includes/smtp.php
 
S

SlaterB

Gast
bei den Ids für den Join?,
kannst ja testen, indem du nur ein Select abfragst statt ein Update durchzuführen,
dauert das Select von p1.skill5 und zugehörigen t1.t1skill5 auch mehrere Minuten oder wenige Sekunden?
 

Angel4585

Bekanntes Mitglied
aslo auf id, player und teams sind jeweils primary bzw foreign keys. reichts das nicht?

Ich werd das mal mit nem select testen

Edit: schonwieder der Fehler beim Absenden, sollte sich ma wer anschaun ???:L
 

Angel4585

Bekanntes Mitglied
Kennt MySQL überhaupt Foreign Keys? Mein phpMyAdmin zeigt mir keine an, sagt mir aber gleichzeitig dass er dieses Statement ausführen konnte:

Code:
 ALTER TABLE player_contracts ADD CONSTRAINT fk_player_contract_player_t FOREIGN KEY ( player ) REFERENCES players( id )
 
G

Guest

Gast
Angel4585 hat gesagt.:
Kennt MySQL überhaupt Foreign Keys? Mein phpMyAdmin zeigt mir keine an, sagt mir aber gleichzeitig dass er dieses Statement ausführen konnte:
Ja, MySQL kennt Foreign Keys.
 
M

maki

Gast
Anonymous hat gesagt.:
Angel4585 hat gesagt.:
Kennt MySQL überhaupt Foreign Keys? Mein phpMyAdmin zeigt mir keine an, sagt mir aber gleichzeitig dass er dieses Statement ausführen konnte:
Ja, MySQL kennt Foreign Keys.
Aber nur falls (My)InnoDB als Tabellentype gewählt wurde, der standard Typ (My)ISAM kennt so etwas nicht und ist daher auch nicht wirklich relational.
 
G

Gast2

Gast
Moin,

ich tippe hier darauf das JOIN's nicht ganz sauber sind ... im Studium hatte ich mal mehrere Tabelle mit JOIN's verbunden ... der Rechner/Server rödelte und meldete sich erst nach ein Minuten wieder ... rund 100.000 Zeilen bearbeitet ... nur gut das die Tabellen zusammen eine mehrere Hand voll Datensätze hatte ... nachdem ich nochmal etwas über die JOIN's nachgedacht habe ging es flotter

hand, mogel
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben