加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – List需要很长时间才能使用Nhibernate Criteria实例化

发布时间:2020-12-15 06:47:47 所属栏目:百科 来源:网络整理
导读:我有这个查询返回7行,在数据库中需要4ms,但要实例化1075ms.这只是时代的一个例子,它在物体上有所不同,但它似乎没有意义,它需要很长时间.任何关于如何提高速度的指针? var criteria = GetSession().CreateSQLQuery( @" select circt_id as CircuitId from no
我有这个查询返回7行,在数据库中需要4ms,但要实例化1075ms.这只是时代的一个例子,它在物体上有所不同,但它似乎没有意义,它需要很长时间.任何关于如何提高速度的指针?
var criteria =
                GetSession().CreateSQLQuery(
                    @"
                    select circt_id as CircuitId from normal_upstream
                        where dni_equip_type = 'A'

                        start with up_equip_stn_no in (:UpStationNo1)
                        connect by prior equip_stn_no = up_equip_stn_no
                        union
                        select circt_id as CircuitId
                        from normal_upstream 
                        where up_equip_stn_no in (:UpStationNo1)")
                    .AddScalar("CircuitId",NHibernateUtil.Int32).SetParameterList("UpStationNo1",upstreamStations)
                    .List<int>()

SQL查询生成

select
     circt_id as CircuitId 
from normal_upstream

where dni_equip_type = 'A'

                            start with up_equip_stn_no in (
    'B' /* :p0 */)
                        connect by prior equip_stn_no = up_equip_stn_no
                        union
                        select
 circt_id as CircuitId
                        from normal_upstream       
where up_equip_stn_no in (
    'B' /* :p1 */)

任何帮助是赞赏.谢谢

解决方法

显然,减缓的是SetParameterList调用.当我在8ms数据库和485ms实例化之前得到一些东西时,我格式化SQL,这是可以接受的.我想要有一些更快的东西,但现在这样做.

这是我目前使用的代码:

var sql =
            String.Format(
                @"select circt_id as CircuitId from normal_upstream
                where dni_equip_type = 'FDR_OCR'
                        start with up_equip_stn_no in ({0})
                        connect by prior equip_stn_no = up_equip_stn_no
                        union
                        select circt_id as CircuitId
                        from normal_upstream 
                        where up_equip_stn_no in ({0})",String.Join(",",upstreamStations.Select(x=>"'"+x+"'").ToArray()));
        var criteria =
            GetSession().CreateSQLQuery(sql)
                .AddScalar("CircuitId",NHibernateUtil.Int32)
                .List();
            return criteria;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读