首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ查询在Visual Studio中花费的时间是LINQPad的1600倍

LINQ查询在Visual Studio中花费的时间是LINQPad的1600倍
EN

Stack Overflow用户
提问于 2016-01-20 22:30:04
回答 2查看 172关注 0票数 0

我正在为ASP MVC中的搜索框构建一个查询。查询在LINQPad中需要10毫秒,在Visual Studio中需要16秒。有什么方法可以改进查询或查询的时间响应吗?

代码语言:javascript
复制
 var queryOracle = (from TS in dbOracle.BI_TYPE_SERVICE
                           join MS in dbOracle.BI_MTR_SRV on TS.BI_ACCT equals MS.BI_ACCT
                           join SL in dbOracle.BI_SRV_LOC on MS.BI_SRV_LOC_NBR equals SL.BI_SRV_LOC_NBR
                           join C in dbOracle.BI_CONSUMER on TS.BI_ACCT equals C.BI_ACCT
                           join P in dbOracle.BI_PERSONAL on C.BI_CUST_NBR equals P.BI_CUST_NBR
                           join STR in dbOracle.BI_SRV_STAT_REF on TS.BI_SRV_STAT_CD equals STR.BI_SRV_STAT_CD
                           where P.BI_ADDR_TYPE != "2B" || P.BI_ADDR_TYPE != "2D" || P.BI_ADDR_TYPE != "FO" || P.BI_ADDR_TYPE != "CC" || P.BI_ADDR_TYPE != "8" || P.BI_ADDR_TYPE != "SE" || P.BI_ADDR_TYPE != "9" || P.BI_ADDR_TYPE != "BD" || P.BI_ADDR_TYPE != "CN" || P.BI_ADDR_TYPE != "CR" || P.BI_ADDR_TYPE != "CS" || P.BI_ADDR_TYPE != "M1" || P.BI_ADDR_TYPE != "M2" || P.BI_ADDR_TYPE != "M3" || P.BI_ADDR_TYPE != "MR"
                           where P.BI_ACCT == 0
                           where P.BI_FORMAT_NAME.StartsWith(term) || SL.BI_ADDR1.StartsWith(term) || MS.BI_MTR_NBR.StartsWith(term) || TS.BI_ACCT.ToString().StartsWith(term)


                           select new
                           {
                               LocationID = SL.BI_SRV_MAP_LOC,
                               MeterNumber = MS.BI_MTR_NBR,
                               AccountNumber = TS.BI_ACCT,
                               ServiceStatCD = TS.BI_SRV_STAT_CD,
                               ServiceStatus = STR.BI_SRV_STAT_DESC,
                               Name = P.BI_FORMAT_NAME,
                               ServiceAddr = SL.BI_ADDR1,
                               ServiceCity = SL.BI_CITY,
                               CustomerNumber = C.BI_CUST_NBR,
                               ServiceCNTY = SL.BI_CNTY_CD,
                               ServiceTOWN = SL.BI_TOWN_CD,
                               HomeAreaCode = P.BI_HOME_AREA_CD,
                               HomePhone = P.BI_HOME_PHN,
                               BusAreaCode = P.BI_BUS_AREA_CD,
                               BusPhone = P.BI_BUS_PHN,
                               MobileAreaCode = P.BI_MOBL_AREA_CD,
                               MobilePhone = P.BI_MOBL_PHN
                           }).AsNoTracking().Take(12).ToList();
EN

回答 2

Stack Overflow用户

发布于 2016-01-20 22:43:30

我也有同样的问题,我想知道为什么。在我的例子中,代码中有一个断点,当在VS环境中运行时,它会减慢整个过程。

因此,在VS中禁用查询中使用的断点应该会更快。

票数 0
EN

Stack Overflow用户

发布于 2016-01-20 22:38:15

第一个问题:为什么不使用单独的函数?

我建议您使用Parallel.ForParallel.ForEach来完成此操作

我绝对不会在主线程中运行它。

我建议使用:

Task.Factory.StartNew()

除了这个查询之外,知道你还使用了什么代码是很重要的。

也许这并不是查询本身需要时间。

诚挚的问候

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34902771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档