Grundsätzlich ist die Kernfrage nicht zu beantworten, da es immer auf den Anwendungsfall ankommt. In Deinem Fall würde ich aber zu der Variante tendieren, für jede Filterung eine neue Abfrage zu feuern. Ich denke, die Abfrage über alles könnte mit der Zeit ( Datenbanken füllen sich ja idealer Weise im Laufe der Zeit ) sehr mächtig werden und bspw. zu Überlauffehlern führen. Eine Abfrage für jede neue Filterung sollte demnach schneller sein ( sofern sie optimiert ist ) und ist ja heutzutage für den Anwender der AJAX Technologie kaum spürbar.
Alles holen und clientseitig filtern:
Das erste Laden dauert länger aber die Umschaltung des Filters geht schnell.
Nicht zwingend. Die komplette Datenmenge muss ja irgendwo zwischengespeichert werden. Ich werfe einfach mal die Behauptung in den Raum, dass das in Objekten oder Arrays der Scriptsprache passiert. Die kann bei sehr großen Datenmengen aber auch einige Zeit in Anspruch nehmen und im schlimmsten Fall zu einem Out of Memory führen.