私は、OtherTableに少なくとも1回出現するユーザーのリストを取得しようとしています。以下はGrailsを使用した非常に非効率なHQLクエリです。一般に、クエリで実行されるユーザーは最大でも数百人に過ぎませんが、OtherTableのユーザーは100万人になる可能性があります。SQL - 他のテーブルに少なくとも1回表示されるIDを選択してください
List<User> users = User.executeQuery("select user " +
"from User as user where user.id = any(" +
"select otherTable.user.id from OtherTable as otherTable)")
このクエリをより効率的にするにはどうすればよいですか?
このクエリが機能する場合は、おそらくかなり効率的です。 –
おそらくそれは私のテストハードウェアでしたか?私のPC上で50,000行のOtherTableでH2を実行するには1秒以上かかりましたが、最終的なハードウェアはより良いハードウェア上でMS SQLになります。 – Anonymous1
SQL Serverのインデックスを使用してクエリを高速化できます。 –