Limitare il numero di righe è un ottimo modo per velocizzare il completamento automatico. Tuttavia, non sono chiaro il motivo per cui dovresti limitare a 1000 righe:non puoi mostrare 1000 voci in un menu a discesa; non dovresti limitarti a forse 10 voci?
Sulla base dei tuoi commenti di seguito, ecco una query di database di esempio che dovresti essere in grado di adattare alla tua situazione:
String queryString = "select distinct b.title from Books b where b.title like ':userValue'";
Query query = entityManager.createQuery(queryString);
query.setParameter("userValue", userValue + "%");
query.setMaxResults(20);
List<String> results = query.getResultList();