我試圖獲取在OtherTable中至少出現一次的用戶列表。以下是使用Grails的非常低效的HQL查詢。通常,最多隻有幾百個用戶在查詢中運行,但可能會有一百萬個用戶在OtherTable中引用這些用戶。SQL - 選擇在其他表中至少出現一次的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上花費了超過一秒的時間在H2上運行50,000行OtherTable,但最終的硬件在更好的硬件上是MS SQL。 – Anonymous1
您可以使用SQL Server中的索引來加速查詢。 –