SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 04.09.2007, 13:04:40
Darky Darky ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 4
MySQL-Server in Endlosschleife

Hallo allerseits,

Ich verzweifle momentan etwas an einer Abfrage, bei der der Server scheinbar in einer Endlosschleife hängen bleibt.
Das zugehörige PHP-Skript bleibt entsprechend im mysql_query() hängen.

Das SQL-Statement sieht so aus:
SELECT COUNT(y2.id) FROM `y_world` AS y1 LEFT JOIN `y_world` AS y2 ON y1.fieldid = y2.fieldid AND y1.dateline = y2.dateline AND y1.id != y2.id

Die Spalten id, fieldid und dateline sind alles Integer.

Das seltsame ist, dass es zeitweise mal funktioniert hat und mal nicht. Das Problem tritt sowohl bei einem Webhoster auf, bei dem ich Kunde bin, als auch bei mir lokal (XAMPPlite 1.5.5). Also vermute ich mal einen Bug bei MySQL.

Nun interessiert mich aber, ob jemand weiss, mit was genau der Server nicht klar kommt.

Gruß,
Darky
Mit Zitat antworten
  #2  
Alt 04.09.2007, 13:09:13
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: MySQL-Server in Endlosschleife

Lass doch bitte mal
Code:
EXPLAIN SELECT COUNT(y2.id) FROM `y_world` AS y1 LEFT JOIN `y_world` AS y2 ON y1.fieldid = y2.fieldid AND y1.dateline = y2.dateline AND y1.id != y2.id
laufen und poste die Ausgabe.

Geändert von defabricator (04.09.2007 um 13:09:27 Uhr)
Mit Zitat antworten
  #3  
Alt 04.09.2007, 13:16:33
Darky Darky ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 4
AW: MySQL-Server in Endlosschleife

id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra
1,SIMPLE,y1,ALL,,,,,2444,
1,SIMPLE,y2,ALL,,,,,2444,

sorry für die blöde formatierung - ich hoffe du siehst trotzdem durch ;)
Mit Zitat antworten
  #4  
Alt 04.09.2007, 13:46:22
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: MySQL-Server in Endlosschleife

Da fehlt mindestens ein Index, um den MySQL Server zu unterstützen.
Code:
ALTER TABLE y_world ADD INDEX irgendeinName (fieldid,dateline,id)
danach dann nocheinmal EXPLAIN ... ausführen und die Ausgabe bitte posten.
Mit Zitat antworten
  #5  
Alt 04.09.2007, 13:53:34
Darky Darky ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 4
AW: MySQL-Server in Endlosschleife

neues Ergebnis ist das:

id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra
1,SIMPLE,y1,index,,irgendeinName,12,,2444,Using index
1,SIMPLE,y2,ref,irgendeinName,irgendeinName,8,test.y1.fieldid,test.y1. dateline,1,Using index

mit den Indizes läuft die Abfrage jetzt auch wunderbar durch :)

Kannst du mir erklären (bzw. mir was zum Lesen empfehlen), nach welchen Kriterien ich die Indizes in Zukunft anlegen soll und wie sich das auf die Laufzeit von Abfragen auswirkt?

Gruß und danke schonmal,
Darky
Mit Zitat antworten
  #6  
Alt 04.09.2007, 14:05:39
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: MySQL-Server in Endlosschleife

Da kann ich leider nicht richtig mit dienen. Indices sind nicht meine Stärke.
Dass es zum Beispiel auf die Reihenfolge, in der man die Felder bei einem komplexen Schlüssel angibt, ankommen kann, habe ich auch gerade erst gelernt, http://www.selfphp.info/forum/showthread.php?t=17578

Geändert von defabricator (04.09.2007 um 14:16:03 Uhr)
Mit Zitat antworten
  #7  
Alt 04.09.2007, 15:43:38
rambi
Guest
 
Beiträge: n/a
AW: MySQL-Server in Endlosschleife

DB Speed Faustregel:
1. Alle Spalten, welche im WHERE Teil vorkommen, sollten mit einem index versehen werden. Das beschleunigt lesezugriffe ungemein!
2. Je mehr Spalten es mit einem Index in der betreffenden Tabelle gibt, desto langsammer sind INSERT, DELETE und UPDATE.
3. Da auch DELETE und UPDATE oft einen WHERE Teil haben, siehe Punkt 1 ;-)
4. Da meist Lesezugriffe überwiegen, lohnt sich oft ein vorsortieren der Daten: "ALTER TABLE `tabelle` ORDER BY `spalte` ASC"
*grob vereinfacht*

Geändert von rambi (04.09.2007 um 15:48:47 Uhr)
Mit Zitat antworten
  #8  
Alt 04.09.2007, 16:25:25
Darky Darky ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 4
AW: MySQL-Server in Endlosschleife

Danke für die Antworten. Ich hab mir auch mal das durchgelesen, was in der MySQL-Doku dazu steht - leider hab ichs nicht ganz verstanden.

Warum die Reihenfolge bei mehrteiligen Indizes eine Rolle spielt hab ich verstanden, aber wann genau ein mehrteiliger Index sinnvoll ist leider nicht. Es wäre sehr nett, wenn du mir das noch sagen kannst :)

Gruß,
Darky
Mit Zitat antworten
  #9  
Alt 05.09.2007, 08:57:31
diver-network diver-network ist offline
Junior Member
 
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
AW: MySQL-Server in Endlosschleife

Hi,

soweit ich weiß ist ein zusammengesetzter Index dann sinnvoller als zwei einzelne Indizes, wenn hauptsächlich über mehrere Spalten gesucht wird.

Z.B.: Wenn Du in einer Adressdatenbank mit u.a. den Spalten nachname und vorname meistens nur nach dem Nachnamen suchst reicht ein Index über "nachname", wenn für Deine Suche aber vor allem die Kombination aus Nachname und Vorname wichtig ist sollte der Index entsprechend über beide Spalten (in der korrekten Reihenfolge) liegen.

Zusammengesetzte Indizes sind aber auch nicht ganz meine Spezialität, bis jetzt haben mir "einfache" Indizes immer ausgereicht.

HTH,

Andy
__________________
Delphine, Wale, Orcas und mee(h)r:
tauchen in Alor/Indonesien
http://www.alor-dive.com
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Lost connection to MySQL server during query Domi MySQLi/PDO/(MySQL) 2 26.07.2007 09:49:32
MySQL Page Script. Problem. dtone MySQLi/PDO/(MySQL) 8 15.10.2006 14:58:06
mysql auf Windows 2000 Advanced Server grape MySQLi/PDO/(MySQL) 1 29.10.2003 10:26:30
...Host 'xx.xx.xx.xx' is not allowed to connect to this MySQL server... fettehenne PHP für Fortgeschrittene und Experten 2 13.10.2002 14:42:13
Can't connect .... mysql Server Ben20 PHP für Fortgeschrittene und Experten 1 21.09.2002 15:54:29


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:30:45 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt