Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ双连接执行时间太长_C#_Linq - Fatal编程技术网

C# LINQ双连接执行时间太长

C# LINQ双连接执行时间太长,c#,linq,C#,Linq,我有一个疑问: var ftr_dist = db.DIST_VIEW.Where(x => x.CITY == "Los Angeles"); var mst2 = db.TB_SERVICE.Where(x => x.ID == x.ID); var trf2 = db.TYPE.Where(x => x.ID == x.ID); var Data = (from ftr in ftr_dist

我有一个疑问:

    var ftr_dist = db.DIST_VIEW.Where(x => x.CITY == "Los Angeles");
    var mst2 = db.TB_SERVICE.Where(x => x.ID == x.ID);
    var trf2 = db.TYPE.Where(x => x.ID == x.ID);

    var Data = (from ftr in ftr_dist
                      join mst in mst2 on ftr.CUSTOMER_ID equals mst.CUSTOMER_ID
                      join trf in trf2 on mst.TYPE_ID equals trf.ID
                      select new TypeObj { City = ftr.CITY, County = ftr.COUNTY, Type = trf.Type }
                      ).OrderBy(i => i.City).ThenBy(i => i.County).ToList();

ftr_dist大约有72000行。mst2有1100000行,trf2有340行。但获取数据的时间太长了。如何使此查询更快?谢谢。

您实际上正在执行4种不同的查询。Linq的查询时间确实比sql字符串长。。。试着和林克呆在一起。将所有查询合并为一个查询

我对lambda查询(x=>x.ID==x.ID)有点困惑。您可能需要将其添加到下面的列表中

var data = from ftr in db.DIST_VIEW
           join mst in db.TB_SERVICE on ftr.CUSTOMER_ID equals 
           mst.CUSTOMER_ID
           join trf in db.TYPE on trf.TYPE_ID equals ftr.ID
           where ftr.CITY == "Los Angeles"
           select new TypeObj 
           {
            City = ftr.City,
            Country = ftr.County,
            Type - trf.Type
           }.OrderBy(i => i.City).ThenBy(i => i.County).ToList();

通过原始sql获得相同的结果需要更短的时间吗?连接一个探查器,看看它在执行什么查询。这些表中有索引吗?我建议在sql应用程序中尝试使用TSQL(例如sql Server的SSMS)并在那里进行操作。也许可以在DB端添加一些索引或其他性能修改。也许你可以创建一个视图,然后用一个比LINQ能为你做的更直接的语句收回它。我照你说的做了,但它仍然需要太长的时间。分析器需要多长时间才能执行?我已经等了5分钟,它仍然在工作。试图收集有关数据库的更多信息。。。您是否可以添加一些日期范围以缩小搜索范围,或者这是历史数据?另外,在查询数据库时,您通常会遇到查询时间问题吗?