Tom: MySQL: arbeiten mit Limit

Beitrag lesen

Hello,

ich trage gerade meine gesammelten Werke zum Thema LIMIT zusammen.

Zum einfachen Vorblättern muss man ja immer nur $offset+=$limit rechnen und zum Zurückblättern $offset-=$limit.

Wenn $offset < 0 dann $offset = 0.

Was aber macht man am hinteren Ende, damit man nicht über's Ziel hinausschießt. Es gibt ja den bekannten Trick, einfach einen Satz mehr abzufragen (also $limit + 1) und wenn der nicht mehr da ist, kein "Vorwärts" mehr anzubieten. Aber das ist mir mal wieder zu unsicher in dynamischen Datenbeständen. Es könnten ja seit dem letzten am hinteren Anschlag Angekommen sein Datensätze hinzugekommen sein (durch andere User).

Welches Statement würdet Ihr benutzen um nun vorab nur die Geamtanzahl der dem Filterkriterium (wahrscheilich "where ...") entsprechenden Datensätze herauszufinden. Felder benötigt man ja eigentlich nicht.

Select count(ID)from table where...;

Ist das das performanteste, was man sich denken könnte?

Eine kleine Unsicherheit gibt's dann ja trotzdem noch, weil zwischen dem Zähl-Select und dem gefüllten mit limit auch wieder Zeit vergeht. Aber damit könnte man leben, da das ja erst relevant wird, wenn $offset > $count werden würde.

Grüße

Tom