1

120,000 行のユーザー テーブル (MySQL) があります。

List<User> users = session.createQuery("from User").list();

この hibernate クエリの実行には約 6 ~ 9 秒かかります。これを最適化するにはどうすればよいでしょうか。MySQL がボトルネックですか? それとも.list()通常これは遅いですか?

4

2 に答える 2

1

もちろん、クエリは完全なテーブル スキャンを実行するため、低速です。クエリの句を含む、それに関連付けられている他のオブジェクトを結合する必要がwhereあります。クエリを変更して、限られた数のレコードを返すか、条件 API と射影を使用することができます。

于 2013-10-05T17:27:23.347 に答える
1

クエリでページネーションを使用します。一度にすべての行を呼び出さないでください。結果の最初の位置と最大結果を設定できます。たとえば、クエリを次のように変更するよりも最初の 100 件の結果を読み取りたい場合:

Query q=session.createQuery("from User");
q.setFirstResult(fistRes);// this will variable
q.setMaxResults(maxRes);// this will also be variable as parameter.
于 2013-10-05T17:25:16.340 に答える