Mysql: 2 in 1
depp
- datenbank
hi
habe einen match against query, bei dem ich z.b. limit 0,100 oder limit 100,200 dranhänge o.ä. .
darüberhinaus hätte ich aber gern auch noch die gesamte anzahl der treffer gewusst, also eigentlich select count(*) where match.... . allerdings wird auch select info1,info2 benötigt für die jeweiligen treffer.
bitte um tipps.
ps: oder spart es etwa gar keine zeit, wenn man den select limitiert?
hi,
habe einen match against query, bei dem ich z.b. limit 0,100 oder limit 100,200 dranhänge o.ä. .
darüberhinaus hätte ich aber gern auch noch die gesamte anzahl der treffer gewusst, also eigentlich select count(*) where match.... . allerdings wird auch select info1,info2 benötigt für die jeweiligen treffer.
Da sollte FOUND_ROWS() weiterhelfen können.
ps: oder spart es etwa gar keine zeit, wenn man den select limitiert?
Doch, das sollte man idR. schon machen.
Mehr Daten zu selektieren, als man haben will, ist nicht gut.
gruß,
wahsaga
wäre dann z.b.
select info1,info2, FOUND_ROWS() AS number_matches FROM tbl1 WHERE match... againt... limit 0,100
?
hi,
wäre dann z.b.
select info1,info2, FOUND_ROWS() AS number_matches FROM tbl1 WHERE match... againt... limit 0,100
?
Nein, im Select musst du angeben, dass die Anzahl der Treffer wie sie ohne Limit wäre berechnet werden soll.
Und FOUND_ROWS() schiebst du dann in einer zweiten Selectanfrage nach.
Die verlinkte Seite hat doch ein Beispiel dafür ...
gruß,
wahsaga
Hi.
Dann kann ich ja gleich select ohne limit machen und mit php mysql_num_rows die anzahl der treffer bekommen. ressourcen wurden dadurch aber nicht gespart :-(
oder hab ich was falsch verstanden?
hi,
Dann kann ich ja gleich select ohne limit machen und mit php mysql_num_rows die anzahl der treffer bekommen. ressourcen wurden dadurch aber nicht gespart :-(
Ohne Limit stellt der MySQL-Server deinem PHP alle Ergebnisdatensätze zur Verfügung - sie müssen also vom DB-Server zum Webserver rübergeschaufelt werden. Und selbst wenn das nicht auf einmal geschieht, sondern Blockweise, ist der Block u.U. größer als das, was du wirklich an Datensätzen haben willst.
gruß,
wahsaga
irgendwie schein ich da was falsch verstanden zu haben.
Du sagtest doch, es müsse ein query ohne begrenzung geschickt werden um das zu zählen.
bin jetzt verwirrt :(
wäre dass dann, wie wenn ich erst select info... mit limit und dann einmal select count(*) ohne limit mache? wär das richtig?
hi,
irgendwie schein ich da was falsch verstanden zu haben.
Du sagtest doch, es müsse ein query ohne begrenzung geschickt werden um das zu zählen.
Nein, das sagte ich nicht.
Allerdings sagte ich bereits, dass das Manual ein Beispiel bereithält - also schaust du dir das jetzt bitte endlich an? Danke.
gruß,
wahsaga