我目前有一个 MultiCriteria 查询,它根据子查询中的 id 过滤结果
Subqueries.PropertyIn("Id", detachedCriteria)
对于多条件查询中使用的所有查询,子查询都是相同的。
看着重复子查询的 sql 似乎有点难看,在我目前的情况下是 15 次。
单独查询的原因是每个查询都有不同的连接,并且不想要一个大规模的笛卡尔连接。
如果我手动编写 sql,我会将重复的子查询提取到公共表表达式中
WITH XYZ AS
{
....
}
然后子查询将是 15 个查询中 XYZ 中的 where id。
这有点特定于 sql server,替代方法是临时表或其他数据库特定功能。
关于如何改进查询的任何想法,或者我是否坚持重复的子查询?