C'è un approccio migliore.
Per prima cosa, non inviare tutti i risultati per impostazione predefinita in un file JSON. I tuoi clienti dovranno scaricare un file enorme senza alcuna ragione, e potresti avere problemi con la cache del browser quando i risultati cambiano.
In secondo luogo, la ricerca chiave su tasto va bene finché la si attiva dopo che sono state scritte lettere X all'interno dell'input di ricerca. X dipende ovviamente dalla tua attività. Inoltre, quando opti per questa soluzione, dovresti eseguire l'impaginazione lato server in modo che le richieste siano leggere e veloci.
Non dovrebbero danneggiare i tuoi server nemmeno con tutti quelli che inviano spam all'input della ricerca.
Questo porta all'ultimo punto: implementare la cache lato server per queste query. Molte persone cercano le stesse cose e il caching potrebbe mostrare un enorme guadagno in termini di prestazioni e costi.
La scelta del motore della cache dipende dalla frequenza delle modifiche applicate a questi risultati.
Tra tutti i precedenti, il secondo punto è cruciale, specialmente per le richieste leggere. Come vedo che stai usando MySQL, avendo l'indicizzazione intelligente del tuo tavolo poiché non cambierà mai potrebbe portare a risultati sorprendentemente veloci.