gpt4 book ai didi

nhibernate - 如何优化此Nhibernate查询(835毫秒)

转载 作者:行者123 更新时间:2023-12-03 17:19:02 24 4
gpt4 key购买 nike

我有这个查询

var temp = from x in ActiveRecordLinq.AsQueryable<Circuits>()
where x.User_Created == false
orderby x.Description
select x;


从NHibernate Profiler
查询时间
-仅数据库:7ms
-总计:835ms

查询生成:

SELECT   this_.Circuit_ID     as Circuit1_35_0_,
this_.[Description] as column2_35_0_,
this_.[User_Created] as column3_35_0_
FROM dbo.Circuit this_
WHERE this_.[User_Created] = 0 /* @p0 */
ORDER BY this_.[Description] asc


这似乎是一个非常简单的查询。它返回6821行。我使用的唯一目的是填充一个下拉列表。

提前致谢

最佳答案

好的,如果您坚持使用7k(我真的相信您应该停止重新考虑您的设计...但是...),则可以尝试执行HQL查询,仅从对象中选择所需的字段,而不是查询对象本身。

使用您编写的查询,nHibernate正在从数据库加载数据,这正如您所指出的那样很快发生。但是,然后基于您编写的Linq查询,它正在初始化,填充和返回7k Circuit对象。这可能要花一些时间...

而且由于在这种情况下您实际上并没有以任何有意义的方式使用“对象”(仅下拉菜单中的文本和值对),因此您实际上不需要nHibernate来构建对象。

尝试更改代码以仅使用HQL或LinqToNHibernate返回文本/值对。

HQL看起来像这样:

select c.description, c.id from Circuit c
where c.ordercreated = false
orderby c.description


我知道您也可以使用LinqToNhibernate进行此操作,但是我手头没有任何快速示例。

关于nhibernate - 如何优化此Nhibernate查询(835毫秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3857690/

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