のうち100を照会HQL:ランダムに私はHQLクエリー次きて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個のレコードをランダムに選択して検索したいだけです(何千ものレコードの中から)。このようなクエリを作成するにはどうすればよいですか?
合計: 10000レコードのうち100レコードをできるだけ効率的にランダムにクエリするにはどうすればよいですか?
ここに違いが見られない理由はたくさんあります。どのデータベース、方言、およびドライバを使用していますか? – Naros
postgressql; c3p0接続プール。 org.postgresql.Driver; org.hibernate.dialect.PostgreSQLDialect 両方のアプローチが実際に無制限の完全クエリを実行することを修正しましたか? – Jake