Complementing @rpetribu great advice and contrary to instinct… my experience has been that the more constraints you place on server runs (searches, not filtering which is done by the browser) the faster returns come back.
This not to say that objects in your dB should be loaded with fields. On the contrary, the lighter your objects are the faster things run.
This is an interesting read (paid) from @petter . Highly recommended: