問題: 多数のエントリでデータベースをクエリしています。全体的なアプリケーションのパフォーマンスは問題ありません。しかし、ボトルネックである特別なテーブルへのクエリを並行して実行できれば、より良いと思います。
そのために、次のような動的ファインダーを使用しています。
Object.findAllByObjectCollectionAndParentIsNullAndDeletedByUserIsNull(objectCollection, [sort: 'attr1.number', fetch: [objectType: 'eager']])
この解決策について考えます。クエリを2つのステップに分割します。
- 最初のステップでは、ソートされた方法で Id のみをロードします。
- 2 番目のステップ (並列スレッドで行うことができます) では、id によってオブジェクト自体をロードし、それを結果セットに挿入します。
私はすでにそれについていくつかのヒントを探しましたが、何も見つかりませんでした。
- それが意味をなさない可能性はありますか?
- または、grails の標準/拡張機能に適切なソリューションが既にありますか?
- それが理にかなっており、解決策がない場合: 誰かがそれを実装するためのヒントを教えてくれますか? ただし、例で説明されているように、並べ替えられた方法で ID が必要です。
grails 2.3.11、hibernate:3.6.10.13 を jdk 1.7 の下に使用しています。