我试图获取在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中的索引来加速查询。 –