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
  #11 (permalink)  
Alt 15.03.2006, 09:58
Benutzer
neuer user
 
Registriert seit: 10.03.2005
Beiträge: 47
Graccem befindet sich auf einem aufstrebenden Ast
Standard

Code:
FROM
         link_entries e,
Mach das Komma weg...

Und werden die WHERE-Bedingungen nicht ans Ende geschreiben?
Mit Zitat antworten
Sponsored Links
  #12 (permalink)  
Alt 15.03.2006, 12:31
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.05.2005
Beiträge: 156
betrazivis befindet sich auf einem aufstrebenden Ast
Standard

Ohne deine Db-Struktur hier irgendwelche Syntaxfehler aufdecken ist doch völlig sinnlos, oder? Der Query sieht aber schon besser aus.

Nimm dir das was Jan gesagt hat zu Herzen. Ich weiß nicht wie groß deine Datenbank ist, denke aber wenn sie mal eine stattliche Größe(so 100-* mb) erreicht hat und du versuchst solche Berechnungen durchzuführen wird mySQL irgendwann anfangen zu swappen und dann geht dein ganzer Server, egal wieviel Ram der hat in die Knie.
Ich hab das Dilemma gerade hinter mir.
__________________
rm -rf $HOME
Mit Zitat antworten
Sponsored Links
  #13 (permalink)  
Alt 15.03.2006, 15:09
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 betrazivis
Ohne deine Db-Struktur hier irgendwelche Syntaxfehler aufdecken ist doch völlig sinnlos, oder? Der Query sieht aber schon besser aus.

Nimm dir das was Jan gesagt hat zu Herzen. Ich weiß nicht wie groß deine Datenbank ist, denke aber wenn sie mal eine stattliche Größe(so 100-* mb) erreicht hat und du versuchst solche Berechnungen durchzuführen wird mySQL irgendwann anfangen zu swappen und dann geht dein ganzer Server, egal wieviel Ram der hat in die Knie.
Ich hab das Dilemma gerade hinter mir.
warum ist das sinnlos? Um Syntaxfehler aufzudecken, braucht man meiner Meinung nach keine DB-Struktur

Ok, Group by versuche ich mal zu entfernen. Aber das an Jan's Post habe ich garnicht so richtig verstanden. Ich muss doch bei jedem Auslesen die Summe der Votes durch die Summe der Stimmen teilen, um den Durchschnitt zu bekommen. Wie soll ich das denn anders machen?


oO Was mir grad auffällt: Meine DB hat grad mal 1 MB genial Naja, ich denke es ist trotzdem gut, wenn ich jetzt schon optimiere, sodass ich später nicht unter Zeitdruck gerate

Edit: Ok, mein Query sieht nun so aus:
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

JOIN link_voting AS v
         ON e.id = v.link_id

WHERE   
         e.flag = 1
      AND e.freigeschaltet < 1142353931   
      AND c.id = 3

GROUP BY
         e.id
ORDER BY
         freigeschaltet desc
LIMIT     
         0, 30
Ich habe Indexe auf e.freigeschaltet, e.flag und auf v.link_id, c.id, e.cat_id, gesetzt. Das macht Sinn, da dieser Query mit am häufigsten benutzt wird, oder?

Im Moment merke ich aber keinen Unterschied zu der Variante mit Where (wenn ich mir die Ausführungszeit in PhpMyAdmin anschaue). Ist das normal, liegt das an der kleinen Datenmenge und wird der Join Vorteile gegenüber dem Query mit where haben, sobald die Datenbestände größer sind?
Mit Zitat antworten
  #14 (permalink)  
Alt 15.03.2006, 15:33
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 03.11.2005
Beiträge: 175
insanic! befindet sich auf einem aufstrebenden Ast
Standard

Achso, noch was:

@Jan & @betrazivis: Group By brauch ich: "Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause ", sobald ichs weglasse ...
Mit Zitat antworten
  #15 (permalink)  
Alt 15.03.2006, 16:16
Benutzerbild von derHund
durstiges Tier
XHTMLforum-Mitglied
 
Registriert seit: 16.09.2004
Beiträge: 870
derHund befindet sich auf einem aufstrebenden Ast
Standard

ja, klar ... das GROUP BY kannst du natürlich nur weglassen, wenn du beim voten schon die bewertung berechnest. bau das doch mal ein und teste, in wie weit es schneller ist.
__________________
Die Zeit hat ihre Kinder längst gefressen: hund (back in black) | ??? | ??? | ...
Mit Zitat antworten
  #16 (permalink)  
Alt 15.03.2006, 16:21
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 03.11.2005
Beiträge: 175
insanic! befindet sich auf einem aufstrebenden Ast
Standard

Aber wie soll ich dort schon die Bewertung berechnen?
Soll ich etwa sowas machen:

den Vote für den entsprechenden Link in die Tabelle link_voting speichern (so wie ichs im Moment schon mache). Dann nochmal alle Votes und Anzahl der Votes aus dieser tabelle auslesen, durcheinander Teilen und diesen Wert in die Tabelle link_entries in die Spalte finalVote speichern? Sodass dort immer der aktuelle Vote-Wert drinsteht.

Aber ich weiß nicht, ist das nicht ebenfalls sehr inperformant, wenn ich jedes mal dann die Tabelle link_voting auslese, den Durchschnitt für den aktuellen Link errechne und dann die Tabelle link_entries update?

Oder meint Ihr was ganz anderes?

Btw: Machen meine Indexe sinn (die ich oben gepostet habe) und merkt man den Unterschied zwischen Join und Where-Join erst bei größeren Datenmengen?
Mit Zitat antworten
  #17 (permalink)  
Alt 15.03.2006, 16:30
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

Ich würde das ganze so gestalten:

Tabelle 1 - Polls
Poll_ID - Frage - Erstellungsdatum - Läuft bis - ...

Tabelle 2 - Antworten
Answer_ID - Poll_ID - Antwort - Votes

Tabelle 3 - Votes
Vote_ID - Answer_ID - Voter - Datum

Damit dürfte alles möglich sein...
__________________
Bitte keine PN's - schreibt mir ne anständige Mail oder sprecht mich über Msn / Icq an
Milian Wolff | Markdownify | Typogridder
Mit Zitat antworten
  #18 (permalink)  
Alt 15.03.2006, 16:44
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 03.11.2005
Beiträge: 175
insanic! befindet sich auf einem aufstrebenden Ast
Standard

Hö? Wie jetzt? Ich habe ja kein Poll-System. Die Leute können lediglich mit 1 - 5 bewerten, also brauche ich ja nur 2 Felder: vote, link_id.

Bei mir ist ja alles möglich, nur halt eventuell etwas inperformant, deswegen eventuell bei jedem Vote den neuen Durchschnitt in die Link_entries - Tabelle speichern ...?
Mit Zitat antworten
  #19 (permalink)  
Alt 15.03.2006, 16:48
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

Ahso, dachte das wäre was komplexeres...

Dann machste einfach zum Link (wegen Link_ID ?!) noch zwei extra Felder:
a) Votes -> z.B. 3 (mal abgestimmt)
b) Votesum -> z.b. 8 (5 + 2 + 1 abgestimmt)

Wenn du jetzt nen neuen Vote reinbekommst machst du ein Votes = Votes + 1 und bei Votesum addierst du die Punktzahl des Votes hinzu.
__________________
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
  #20 (permalink)  
Alt 15.03.2006, 17:09
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 03.11.2005
Beiträge: 175
insanic! befindet sich auf einem aufstrebenden Ast
Standard

und die andere Tabelle wegschmeißen? Aber hey, dann muss ich ja jedes mal beim Auslesen den Durchschnitt erneut errechnen. Genau das meinte Jan, soll ich versuchen, zu vermeiden ... Deswegen der Inhalt des 1. Posts auf dieser Seite
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 18:26
Queries und Performance insanic! Serveradministration und serverseitige Scripte 17 15.04.2006 17:49
kann man den code optimieren? Sentinel CSS 2 23.08.2005 12:45
120 dpi bildschirmanzeige --> website optimieren? captain CSS 1 16.06.2005 15:59
Seite optimieren Petty (X)HTML 31 16.03.2005 00:22


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