首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化ef-core查询

优化ef-core查询
EN

Stack Overflow用户
提问于 2020-06-24 18:38:39
回答 1查看 517关注 0票数 0

有没有人知道如何在性能方面改进或优化这个查询?由于缺少外键/导航属性,无法使用包含,因为这是一个支架模型。

代码语言:javascript
复制
using (var session = new Typo3DBContext())
            {
                var countryList = session.TxNeustageodataDomainModelCountry
                            .Where(x => x.Deleted == 0)
                            .Join(session.TxNeustameinereiseDomainModelTripCountryMm,
                                    country => (uint)country.Uid,
                                    tripMM => tripMM.UidForeign,
                                    (country, tripMM) =>
                                        new
                                        {
                                            country = country,
                                            tripMM = tripMM
                                        })
                            .Join(session.TxNeustameinereiseDomainModelTrip,
                                    combinedEntry => combinedEntry.tripMM.UidLocal,
                                    trip => trip.Uid,
                                    (combinedEntry, trip) =>
                                        new
                                        {
                                            combinedEntry = combinedEntry,
                                            trip = trip
                                        })
                            .GroupBy(
                                temp =>
                                    new
                                    {
                                        Name = temp.combinedEntry.country.Name,
                                        Iso = temp.combinedEntry.country.Iso,
                                        Id = temp.combinedEntry.tripMM.UidForeign,
                                        Status = temp.trip.Status,
                                        Deleted = temp.trip.Deleted
                                    },
                                temp => temp.combinedEntry.tripMM
                            )
                            .Where(x => x.Key.Status == 2 && x.Key.Deleted == 0)
                            .Select(
                                group =>
                                    new CountryHelperClass
                                    {
                                        Count = group.Count(),
                                        Iso = group.Key.Iso,
                                        Name = group.Key.Name,
                                        Id = group.Key.Id

                                    })
                            .ToList();

                return countryList;
            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-24 19:09:15

您可以首先分析生成的SQL,并查看是否生成了最佳sql。您可以按照链接开始。使用linq查询的另一个好工具是使用LINQPad。Linq查询的一些常见问题是

  • “N+1选择”问题(如果您正在使用ef core 3,则正在优化此问题和其他与sql相关的问题):
  • 对行和列贪婪
  • 与变更跟踪有关的问题
  • 缺失指标

有关这些问题的详细资料,请参阅网上的上述连结。

通常,我采用存储过程方法来处理复杂查询,因为这样可以节省大量优化查询的时间。

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

https://stackoverflow.com/questions/62561938

复制
相关文章

相似问题

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