gpt4 book ai didi

mysql - 子查询上的 NHibernate INNER JOIN

转载 作者:行者123 更新时间:2023-11-29 01:04:11 24 4
gpt4 key购买 nike

我想做一个子查询,然后内部连接它的结果来生成一个查询。我想这样做,因为我已经测试了一个内部连接查询,与直接 IN 子查询相比,它在 MySql 上的性能似乎要高得多。

下面是我尝试重现的 sql 类型的一个非常基本的示例。

表格

项目

  • 项目编号
  • 姓名

元素关系

  • 项目编号
  • 关系编号

我想创建的示例 SQL

给我名称为“bob”的项目的关系数:

select ir.itemId, count(ir.relationId)
from ItemRelations ir
inner join (select itemId from Items where name = 'bob') sq
on ir.itemId = sq.itemId
group by ir.itemId

基础 Nhibernate QueryOver

var bobItems = QueryOver.Of<Item>(() => itemAlias)
.Where(() => itemAlias.Name == "bob")
.Select(Projections.Id());

var bobRelationCount = session.QueryOver<ItemRelation>(() => itemRelationAlias)
.Inner.Join(/* Somehow join the detached criteria here on the itemId */)
.SelectList(
list =>
list.SelectGroup(() => itemRelationAlias.ItemId)
.WithAlias(() => itemRelationCountAlias.ItemId)
.SelectCount(() => itemRelationAlias.ItemRelationId)
.WithAlias(() => itemRelationCountAlias.Count))
.TransformUsing(Transformers.AliasToBean<ItemRelationCount>())
.List<ItemRelationCount>();

我知道可以将其重构为单个查询,但以上只是一个简单的示例。我无法更改分离的 QueryOver,因为它已交给我的代码并用于系统的其他部分。

有谁知道是否可以对分离条件进行内部联接?

最佳答案

MySql 5.6.5 已经解决了与查询结构相关的性能问题。

参见此处:http://bugs.mysql.com/bug.php?id=42259

我不再需要更改 NHibernate 查询的输出格式。 :)

关于mysql - 子查询上的 NHibernate INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12515579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com