У меня есть следующий HQL запросHQL: Произвольное запрос 100 из 10000 записей
Query q = session.createQuery
("Select j.salaryStartRange From Job j where region like (:region) and
uniquejobid in (:ujIds) and j.salaryStartRange > 10000
and (:degreeName) in elements(j.areasOfStudy) order by rand()");
q.setParameterList("ujIds", ujIds);
q.setParameter("region", region);
q.setParameter("degreeName", degreeName);
Кажется, что время запроса не одно и то же, независимо от того, использую ли я:
List<Integer> result = q.setFirstResult(0).setMaxResults(100).list();
или
List<Integer> result = q.list();
Иными словами, полный запрос возможных результатов ведется в обоих запросах. Предел maxResults, по-видимому, устанавливается только после завершения запроса. Я только хочу запросить случайный выбор из 100 записей (из потенциально тысяч записей). Как создать такой запрос?
Сумма: Как я могу случайным образом запросить 100 из 10000 записей максимально эффективно?
Может быть множество причин, по которым вы здесь не видите никакой разницы. Какую базу данных, диалект и драйвер вы используете? – Naros
postgressql; пул соединений c3p0; org.postgresql.Driver; org.hibernate.dialect.PostgreSQLDialect Правильно ли, что оба подхода фактически выполняют полный запрос без ограничений? – Jake