zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Meine Queries optimieren

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 14.03.2006, 17:26
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 03.11.2005
Beiträge: 175
insanic! befindet sich auf einem aufstrebenden Ast
Standard Meine Queries optimieren

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
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 14.03.2006, 17:33
Benutzerbild von The Doc
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 19.01.2005
Beiträge: 1.114
The Doc befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 14.03.2006, 17:43
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 03.11.2005
Beiträge: 175
insanic! befindet sich auf einem aufstrebenden Ast
Standard

Wie viel Speicher verbraucht ein Index ca? Verlangsamt es die DB, wenn man unnötige Indizes setzt?
Mit Zitat antworten
  #4 (permalink)  
Alt 14.03.2006, 17:45
Benutzerbild von The Doc
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 19.01.2005
Beiträge: 1.114
The Doc befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #5 (permalink)  
Alt 14.03.2006, 18:53
Jan Jan ist offline
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 27.02.2005
Beiträge: 175
Jan befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #6 (permalink)  
Alt 14.03.2006, 20:24
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 03.11.2005
Beiträge: 175
insanic! befindet sich auf einem aufstrebenden Ast
Standard

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]
Mit Zitat antworten
  #7 (permalink)  
Alt 14.03.2006, 20:43
Benutzerbild von The Doc
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 19.01.2005
Beiträge: 1.114
The Doc befindet sich auf einem aufstrebenden Ast
Standard

Ein Index setzen...
__________________
Bitte keine PN's - schreibt mir ne anständige Mail oder sprecht mich über Msn / Icq an
Milian Wolff | Markdownify | Typogridder
Mit Zitat antworten
  #8 (permalink)  
Alt 14.03.2006, 21:58
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 03.11.2005
Beiträge: 175
insanic! befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von The Doc
Ein Index setzen...
eben nicht
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
habe eigentlich überall auf c.id, v.link_id, e.cat_id indexe ... das ergebnis:

http://img1.myimg.de/Zwischenablage020b5.jpg

Kann man da noch was verbesserung, außer nen gescheiten join anstatt dem pseuo.where.join zu nutzten?
Mit Zitat antworten
  #9 (permalink)  
Alt 15.03.2006, 00:32
Benutzerbild von derHund
durstiges Tier
XHTMLforum-Mitglied
 
Registriert seit: 16.09.2004
Beiträge: 870
derHund befindet sich auf einem aufstrebenden Ast
Standard

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) | ??? | ??? | ...
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 15.03.2006, 07:31
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 03.11.2005
Beiträge: 175
insanic! befindet sich auf einem aufstrebenden Ast
Standard

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
Fehler:

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
Warum?`
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Queries für verschiedene DBs generieren lassen Schelm.isch Serveradministration und serverseitige Scripte 5 23.06.2008 17:26
Queries und Performance insanic! Serveradministration und serverseitige Scripte 17 15.04.2006 16:49
kann man den code optimieren? Sentinel CSS 2 23.08.2005 11:45
120 dpi bildschirmanzeige --> website optimieren? captain CSS 1 16.06.2005 14:59
Seite optimieren Petty (X)HTML 31 15.03.2005 23:22


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:09 Uhr.