Anotherone Posted August 24, 2007 Report Share Posted August 24, 2007 Nimms mir nicht übel, aber man sollte sich das Query ansehen, das ich kritisiert habe. Es handelt sich um den normalen Primary Key und nicht um den durchaus hilfreichen zusätzlichen Index auf categories_id. Ich weiss, wie MySQL arbeitet und verstehe auch das Explain. Aber darum gings gar nicht... Das ist kein Quatsch. Wenn du dir das Explain richtig angeguckt hättest dann würdest du den Unterschied sehen. PHPmyadmin sagt zwar, dass ein Index für das Feld bereits existiert jedoch steht das Feld "categories_id" an zweiter Stelle im Primary Key. Der der Index kann also nur verwendet werden, wenn im WHERE auch das Feld "products_id" abgefragt wird. Der MySQL Query Optimizer macht in diesem Fall keinen so guten Job und baut die Query nicht ganz optimal auf. Vor der Änderung ist der Optimizer hingegangen und hat erstmal alle Produkte aus der Tabelle "products" ausgelesen und hat erst danach geschaut welches Produkt ist eigentlich in der gesuchten Kategorie. Nach meiner Änderung macht er es genau anders herum. Er guckt erst nach welche Produkte in dieser Kategorie sind und holt sich dann aus der Tabelle "products" alle nötigen Daten. Schau dir das Explain an und du wirst den Unterschied sehen. Jetzt nicht verwirren lassen aber man kann den Index auch weglassen wenn man den Query Optimizer umgeht und ein STRAIGHT JOIN einbaut. Aber das ist eher was für Profis und es gibt auch ein paar Nachteile. ~Andreas Link to comment Share on other sites More sharing options...
lingott Posted August 24, 2007 Author Report Share Posted August 24, 2007 Na wie auch immer. Bug wurde behoben... Link to comment Share on other sites More sharing options...
kurotecc Posted August 25, 2007 Report Share Posted August 25, 2007 Hallo lingott ich habe dir eine PN geschickt. Gruß Georg Link to comment Share on other sites More sharing options...
kurotecc Posted August 26, 2007 Report Share Posted August 26, 2007 Bei mir sieht das jetzt so aus. Ist das eigentlich richtig dass sich da alles wiederholt, oder kann ich die dppelten Einträge löschen? Wäre nett wenn das mal jemand kommentieren könnte Gruß Georg Link to comment Share on other sites More sharing options...
lingott Posted August 26, 2007 Author Report Share Posted August 26, 2007 Mensch. Du hast ja überhaupt keine Ahnung, was? Am besten stellst du alles wieder zurück und läßt die Finger davon. Du dürfest eigentlich nur 2 Indizies haben. Den PRIMARY und den categories_id. Alles andere muss weg. Link to comment Share on other sites More sharing options...
kurotecc Posted August 26, 2007 Report Share Posted August 26, 2007 Ich habe nicht gemacht asser den letzten Eintrag idx_categories_id. Der Rest war schon da. Auch in dem alten Shop. Und wenn ich Ahnung hätte würde ich hier nicht posten. Dies ist ein Supportforum!!! Denke ich Link to comment Share on other sites More sharing options...
lingott Posted August 29, 2007 Author Report Share Posted August 29, 2007 Also für mich sieht das nicht in Ordnung aus was dein Screenshot zeigt Ich wollte hier nur einen Tipp zur Performance Steigerung geben. Mit deinem Problem würde ich mich direkt an den XT-Support wenden. Oder erstell ein neuen Thread... Link to comment Share on other sites More sharing options...
kurotecc Posted August 29, 2007 Report Share Posted August 29, 2007 Hallo Andreas ich habe die DB jetzt bereinigt und von PHP Version 5.2 auf 4.4 umgestellt. Die products_to_categories sieht jetzt so aus. Die Performance ist nun wie auf dem alten VPS bei 0,5-0,8 Sekunden. Mit php 5.2 waren es 2 - 5 Sekunden parse time. Gruß Link to comment Share on other sites More sharing options...
Tronus Posted August 30, 2007 Report Share Posted August 30, 2007 Hallo, Super Sache! Kann mir bitte jemand kurz erklären, wo und wie ich die Performance messen kann. Ihr schreibt ja, dass es bei euch wesentliche Verbesserungen gibt nach MySQl-Änderung, würde auch gerne den Vorher- / Nachher-Vergleich machen. vielen Dank Link to comment Share on other sites More sharing options...
lingott Posted August 30, 2007 Author Report Share Posted August 30, 2007 Kann mir bitte jemand kurz erklären, wo und wie ich die Performance messen kann. Manchmal frage ich mich wirklich ob die Posts hier auch gelesen werden!? Du musst eigentlich nur ein "reset query cache;" vor jede Query setzen. Dann wird dir die Zeit ohne Benutzung des Caches angezeigt. Entweder direkt auf der Console oder z.B. im PHPmyAdmin. Link to comment Share on other sites More sharing options...
Tronus Posted August 30, 2007 Report Share Posted August 30, 2007 Sorry, aber kapiere es nicht. Den Index zu setzen ist kein Problem aber mit der Performancemessung tu ich mich einfach schwer. Bei 1&1 im phpmyadmin gehe ich auf products_to_categories und gebe in das Eingabefeld für SQL-Befehle reset query cache; `products_id` ein, aber es wird mir ein Fehler angezeigt. Ich kenne mich nur so gut wie überhaupt nicht mysql aus, aber es dürfte doch nicht so schwer sein. Bitte zeige mir was ich genau machen muss. Vielen Dank im Voraus Link to comment Share on other sites More sharing options...
lingott Posted August 30, 2007 Author Report Share Posted August 30, 2007 sorry. keine Zeit für sowas. Link to comment Share on other sites More sharing options...
Tronus Posted August 30, 2007 Report Share Posted August 30, 2007 Kann mir denn jemand anderes kurz erklären wo ich das performance script in myphpadmin eingebe? Link to comment Share on other sites More sharing options...
BareboneF Posted September 20, 2007 Report Share Posted September 20, 2007 Den Index auf die Products_id zu setzen bedeutet jedoch, daß dort jede Zahl nur einmal existieren darf. Wie hast Du es dann gemacht, wenn ein Artikel in mehreren Kategorien vorhanden ist? Link to comment Share on other sites More sharing options...
sff Posted September 20, 2007 Report Share Posted September 20, 2007 Du sollst doch den Index auch auf categories_id setzen und nicht products_id !! Link to comment Share on other sites More sharing options...
BareboneF Posted September 20, 2007 Report Share Posted September 20, 2007 auch schon probiert, da existieren aber auch mehrere gleiche Kategorie-Nummern, sodaß Index setzen nicht gestattet ist. Link to comment Share on other sites More sharing options...
sff Posted September 25, 2007 Report Share Posted September 25, 2007 Und wo kommen die doppelten Einträge her? Kann ein Artikel 2x in der gleichen Kategorie verlinkt sein? Link to comment Share on other sites More sharing options...
BareboneF Posted September 25, 2007 Report Share Posted September 25, 2007 products_id hat doppelte einträge, weil ein Artikel in verschiednen Kategorien existiert. categories_id hat doppelte einträge, weil in einer categorie viele verschiedene Artikel existieren. Also bekomme ich beim anlegen eines primary_key auf die categories_id die nachricht: SQL Error,: Duplicate entry '61' for key 1, wobei 61 die Kategorie ist, wo sich mehrere Artikel befinden. Wenn ich den primary_key auf die products_id lege, dann kommt: Duplicate entry '1316' for key 1, wobei 1316 der erste Artikel ist, der in mehreren Kategorien existiert und dadurch in der product_id Spalte mehrmals vor kommt. Das ganze passiert, wenn ich den primary key versuche zu löschen und neu setzen, der im Moment auf beiden spalten (product_id und categories_id) gelegt ist. Wenn ich einen neuen Index setze, dann kann ich den zwar auf die categories_id legen, der shop wird dadurch kein bisschen schneller oder langsamer. Klar, niemand verwendet den zuätzlichen Index. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.