|
|||
![]()
Hallo,
meine Seite lädt zwar sehr schnell, aber da meine Besucherzahlen wachsen, möchte ich dementsprechend auch meine Seite optimieren. Nur ehrlichgesagt weiß ich garnicht, wie das geht :/ Ich weiß nicht, wie man Indexe am Besten vergibt, auch wenn ich das Manual schon gelesen habe. Ich kenne Explain SQLCode, aber das Ergebnis, das ich in PHPmyAdmin bekomme, sagt mir nichts (auch nachdem ich mir das durchgelesen habe) ... Könnt Ihr mir eventuell helfen, meine Queries bzw meine Tabellen zu optimieren? Wäre echt toll, Danke! p.s.: Ich könnte ja einfach ein Paar Screenshots von Query + Ergebnis von Explain+Query posten!? Nr1: http://img1.myimg.de/Zwischenablage027f4.jpg |
Sponsored Links |
|
||||
![]()
Edit: Grad nochmal deine Query angeguckt, die ist wirklich grauenhaft, aber weniger wegen den Indizes!
Benutz mal Joins, afaik ist das weit schneller. Grundsätzlich versuchen, dass jedes Element, was du in Joins oder Where verwendest ein Index ist. Und ich wüsste nicht, was man mehr wissen muss, als hier beschrieben: http://dev.mysql.com/doc/refman/4.1/en/explain.html Solltest halt Folgendes überlegen: Wird das Feld in einem Join / Where benutzt? --> z.B. ID's (sind aber schon Primary und damit schon ein Index) --> Date / Timestamp etc. --> varchar / int Aber überlegen, ob der Index sinn macht, wenn die Query selten ist bringt es nicht viel ein Index aufzubauen und damit unnötig Speicher zu verschwenden.
__________________
Bitte keine PN's - schreibt mir ne anständige Mail oder sprecht mich über Msn / Icq an Milian Wolff | Markdownify | Typogridder |
Sponsored Links |
|
||||
![]()
Ob es sie verlangsamt kann ich nicht sagen, aber jeder Index belegt auf dem Server speicherplatz - und alles was unnötig ist, sollte man prinzipiell lassen!
Überleg dir also, wo du ein Index setzt, mach nicht überall einfach ein Index, weil du denkst, dass das mal irgendwann gebraucht werden könnte...
__________________
Bitte keine PN's - schreibt mir ne anständige Mail oder sprecht mich über Msn / Icq an Milian Wolff | Markdownify | Typogridder |
|
|||
![]()
Hallo!
Ich würde versuchen die GROUP-Klausel aus der Abfrage zu bekommen. Die verbraucht meist sehr viel Kapazitäten. Du könntest z.B. die Zahlen der Votes und die Summe der Bewertung mit in der link_entries speichern. So brauchst du diese Zahlen nicht bei jedem Abruf neu berechnen. Dennoch würde ich jede Stimme zusätzlich, wie du das jetzt auch schon machst, in einer getrennten Tabelle speichern, um später vielleicht anderen Statistiken generieren zu können. Unnötige Indizes verbrauchen nur Speicherplatz. Dennoch verbrauchen Sie auch Rechenleistung, wenn Änderungen an den Tabellen vorgenommen werden. Deshalb macht es z.B. keinen Sinn einen Index einzurichten, der nur einmal die Woche benötigt wird, wenn pro Tag mehrere Änderungen an der Tabelle vollzogen werden. Hier die Erklärung der EXPLAIN Ausgabe: http://www.xhtmlforum.de/viewtopic.php?p=29362#29362 Gruß Jan |
|
|||
![]()
Danke euch beiden.
@Jan: So eine ähnliche Erkläreung für EXPLAIN habe ich schon gelesen, jedoch nützt Sie mir nicht viel. Ich werd daraus nicht schlau, denn ich weiß nicht, was ich dann zu machen habe, um z.b. bei "type" von "ALL" wegzukommen ...[/url] |
|
||||
![]()
Ein Index setzen...
__________________
Bitte keine PN's - schreibt mir ne anständige Mail oder sprecht mich über Msn / Icq an Milian Wolff | Markdownify | Typogridder |
|
|||
![]() Zitat:
![]() mein query: Code:
EXPLAIN SELECT e.id, c.name, c.name as cat_name, c.id as catid, e.freigeschaltet, e.beschreibung, e.poster, e.poster_hp, e.hits, (sum(v.vote)/count(v.vote)) as roundedRating FROM link_entries e, link_cats c, link_voting v WHERE c.id = e.cat_id AND c.id = "3" AND v.link_id = e.id AND flag = "1" AND freigeschaltet < 1142353931 GROUP BY e.id ORDER BY freigeschaltet desc LIMIT 0, 30 http://img1.myimg.de/Zwischenablage020b5.jpg Kann man da noch was verbesserung, außer nen gescheiten join anstatt dem pseuo.where.join zu nutzten? ![]() |
|
||||
![]()
ich würds wirklich erstmal mit JOINs versuchen, außerdem die " um zahlen weglassen.
__________________
Die Zeit hat ihre Kinder längst gefressen: hund (back in black) | ??? | ??? | ... |
Sponsored Links |
|
|||
![]()
ich habe das Gefühl, ich sei zu blöd
![]() Habe nun viel rumprobiert. Er PHPMyAdmin meckert immer bei folgendem Query: Code:
EXPLAIN SELECT e.id, c.name, c.name as cat_name, c.id as catid, e.freigeschaltet, e.beschreibung, e.poster, e.poster_hp, e.hits, (sum(v.vote)/count(v.vote)) as roundedRating FROM link_entries e, JOIN link_cats AS c ON e.cat_id = c.id WHERE c.id = 3 JOIN link_voting AS v ON e.id = v.link_id WHERE e.flag = 1 AND e.freigeschaltet < 1142353931 GROUP BY e.id ORDER BY freigeschaltet desc LIMIT 0, 30 Code:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN link_cats AS c ON e.cat_id = c.id JOIN link_voting AS v ON e.id =' at line 15 ![]() |
Sponsored Links |
![]() |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Media Queries - Wie Ausnahmen behandeln? | Toxuas | CSS | 3 | 02.08.2016 12:12 |
Media Queries wollen einfach nicht auf dem Smartphone funktionieren! | Der.Andi | CSS | 4 | 15.11.2015 10:31 |
Media Queries vs. Extraseite | Mr.T | CSS | 5 | 07.11.2011 21:58 |
Queries für verschiedene DBs generieren lassen | Schelm.isch | Serveradministration und serverseitige Scripte | 5 | 23.06.2008 17:26 |
Seite optimieren | Petty | (X)HTML | 31 | 15.03.2005 23:22 |