zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden SQL Datensätze über Limit hinaus zählen?

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 11.05.2009, 23:32
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard SQL Datensätze über Limit hinaus zählen?

Ich habe hier eine (für meine Verhältnisse) komplexe Abfrage über mehrere Tabellen mit mehreren Joins und unterschiedlichen Bedingungen. Da die gefundenen Datensätze im Tausender-Bereich liegen will ich die Ausgabe über mehrere Seiten verteilen, die Abfrage wird dann mit LIMIT unterteilt.
Allerdings brauche ich für die Berechnung der Seitenanzahl die Gesamtanzahl der Datensätze, die auf diese Abfrage zutreffen, unabhängig von dem Limit-wert.

Gibt es eine Möglichkeit das gleich mit in der Abfrage unter zu bringen oder muss ich eine extra Abfrage machen um dann mit "numRows()" zu zählen. Das erscheint mir etwas "aufwändig"
__________________
github | http://dnaber.de
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 11.05.2009, 23:36
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 07.04.2005
Ort: Kuchen
Beiträge: 119
Dani@okraina befindet sich auf einem aufstrebenden Ast
Standard

MySQL :: MySQL 5.1 Referenzhandbuch :: 3.3.4.8 Zeilen zählen
mhh wenn du COUNT() as irrgendwas machst... weis aber jetzt nicht ob man bei Limit drauf zugreifen kann
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 11.05.2009, 23:49
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Wenn du die Ergebnismenge mit LIMIT einschränkst, würde ich eher mit FOUND_ROWS() arbeiten, statt die Ergebnismenge zwei mal zu erzeugen (einmal für Gesamtanzahl der Datensätze und einmal für die Daten der beschränkten Ergebnismenge).
__________________
Markus Wulftange
Mit Zitat antworten
  #4 (permalink)  
Alt 11.05.2009, 23:51
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 07.04.2005
Ort: Kuchen
Beiträge: 119
Dani@okraina befindet sich auf einem aufstrebenden Ast
Standard

Man lernt nie aus
Mit Zitat antworten
  #5 (permalink)  
Alt 12.05.2009, 00:10
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Genau darüber bin ich auch gestolpert und habe das ausgemessen.

Die zweite Abfrage (mit Holen der Daten) ist erheblich schneller (sehr erheblich).
Es hängt vermutlich mit dem Cache zusammen. Es spricht nichts gegen 2 Abfragen.

(SqLite3, C, WinXP, Apache 2)
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
  #6 (permalink)  
Alt 12.05.2009, 00:39
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Gumbo Beitrag anzeigen
Wenn du die Ergebnismenge mit LIMIT einschränkst, würde ich eher mit FOUND_ROWS() arbeiten, statt die Ergebnismenge zwei mal zu erzeugen (einmal für Gesamtanzahl der Datensätze und einmal für die Daten der beschränkten Ergebnismenge).
Danke, Markus.
Und natürlich auch den Anderen fürs Antworten, aber genau sowas hab ich gesucht.
__________________
github | http://dnaber.de

Geändert von David (12.05.2009 um 00:42 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 20.05.2009, 12:30
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

Ich habs mal bei einem Projekt benutzt und auch gemessen - es ist eine recht komplexe Query mit 2x JOINS und vielen WHERE ... AND ... OR

Über zwei Queries: 1,745ms
Über eine Query + FOUND_ROWS(): 0.985ms

Für Neugierige:
PHP-Code:
$getmember_qry="
    SELECT SQL_CALC_FOUND_ROWS
        t1.`id`,
        t1.`name`,
        t1.`surname`,
        t1.`hide_surname`,
        t1.`regdate`,
        t2.`picname`,
        t3.`plz`
    FROM
        `ttb_user` AS t1
    LEFT JOIN
        `ttb_user_pics` AS t2
    ON
        t1.`id`        =    t2.`user_id`
    LEFT JOIN
        `ttb_user_profile` AS t3
    ON
        t1.`id`        =    t3.`user_id`
    WHERE
        t1.`status`    =    1
    
{$search_word_sql}
    ORDER BY
        t1.`name` ASC
    LIMIT
        
{$offset}, 20
"

__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #8 (permalink)  
Alt 20.05.2009, 20:26
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Interessant, werde mir die Funktion dann wohl auch mal etwas näher beäugeln.

Danke für die Info.
Mit Zitat antworten
  #9 (permalink)  
Alt 21.05.2009, 03:31
Benutzerbild von Pablo
4 8 15 16 23 42
XHTMLforum-Kenner
 
Registriert seit: 31.05.2004
Beiträge: 1.772
Pablo sorgt für eine eindrucksvolle AtmosphärePablo sorgt für eine eindrucksvolle Atmosphäre
Standard

Siehe dazu auch SQL_CALC_FOUND_ROWS fhrt zu unerklrlichen Abstrzen Beitrag PHP Performance
Aber so lange es bei euch gut und schnell klappt, kein Problem.
__________________
Go Opera!
… oder Chrome. Auch cool.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 21.05.2009, 11:25
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

Vielleicht war das ein Bug in seiner MySQL Version. Bei mir lokal und auf dem Kundenserver läuft es sauber.
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
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



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