使用EF4.4分页时,第一页特卡,查询过程要500多毫秒,才6w数据

yulei6 2019-08-15 02:48:52
使用EF4.4分页时,第一页特卡,查询过程要500多毫秒,才6w数据
试了很多办法都不行,而且很奇怪。

代码如下

select.Skip((page - 1) * pagesize).Take(pagesize).AsNoTracking().AsParallel().ToList();

比如pagesize默认是30,我执行就卡
但是如果我把pagesize改成90,执行效率就很高
然后我把pagesize默认值改成90,过一段时间,90就开始卡了,而30就没事儿了

后来我去掉了Skip,不再分页了。
select.Take(pagesize).AsNoTracking().AsParallel().ToList();
每一次查询的速度都很快


很奇怪,希望各位老大帮忙分析分析,啥情况

tzs selectSV = new tzs ();
var select = selectSV.Where(p => p.DeleteFlag == 0 && p.InfoLevel=4);

我用sqlprofile监听sql 但是看不到任何sql记录
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yulei6 2019-08-19
  • 打赏
  • 举报
回复
换了服务器,好了, 可能是我sql有问题了,谢谢各位!
LvBao_117 2019-08-17
  • 打赏
  • 举报
回复
和底层的sql关系不大,关键在于linq,在这里找瓶颈
zetee 2019-08-16
  • 打赏
  • 举报
回复
缺少order by 语句, 把orderby 语句加上,并且加索引 和 skip .take 没多大关系
叫我 Teacher 周 2019-08-16
  • 打赏
  • 举报
回复
敢升级到6.2不?哪个年代了,还用4的版本
yulei6 2019-08-15
  • 打赏
  • 举报
回复
生成的sql是这样的,邪了

SELECT
[Project1].[ID] AS [ID],
[Project1].[OwnerID] AS [OwnerID],
[Project1].[Name] AS [Name],
[Project1].[NamePinYin] AS [NamePinYin],
[Project1].[NamePinYinShou] AS [NamePinYinShou],
[Project1].[IDCard] AS [IDCard],
*
FROM ( SELECT
[Extent1].[ID] AS [ID],
[Extent1].[OwnerID] AS [OwnerID],
[Extent1].[Name] AS [Name],
[Extent1].[NamePinYin] AS [NamePinYin],
[Extent1].[NamePinYinShou] AS [NamePinYinShou],
*
FROM [dbo].[TZ_A] AS [Extent1]
WHERE (0 = [Extent1].[DeleteFlag]) AND ([Extent1].[InfoLevel] = 4)
) AS [Project1]
ORDER BY [Project1].[ID] DESC
yulei6 2019-08-15
  • 打赏
  • 举报
回复
引用 1 楼 iFrameCooperation 的回复:
把EF自动转的查询源码拿出来看看,看看他自动转成的sql是否合理,这个才是最根本的东西

我感觉有些挺不合理的
我count,他给我生成的是
SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[TZ_ActionLog] AS [Extent1]
WHERE (0 = [Extent1].[DeleteFlag]) AND (4933 = [Extent1].[DistrictID])
) AS [GroupBy1]
皮皮熊_1989 2019-08-15
  • 打赏
  • 举报
回复
把EF自动转的查询源码拿出来看看,看看他自动转成的sql是否合理,这个才是最根本的东西

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧