Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于系统自带分页BUG,希望能重视!!! #136

Open
ysq5202121 opened this issue Mar 3, 2021 · 11 comments
Open

关于系统自带分页BUG,希望能重视!!! #136

ysq5202121 opened this issue Mar 3, 2021 · 11 comments

Comments

@ysq5202121
Copy link

经过大量的测试,发现分页如果数据量比较大,最后几页是无法展示出来,出现查询不出来的情况,小到数据量2万左右,千万数据测试也是一样,无法查询出来(Sqlserver2012)

@Coldairarrow
Copy link
Owner

生成的SQL看一下

@ysq5202121
Copy link
Author

生成的SQL用数据库查询很快,但是用程序却很慢,似乎与注入的参数有关系

@ysq5202121
Copy link
Author

经过多方面的比对,目前来说可以排除SQL本身查询慢,只有最后几页数据比较慢,前面的是不会慢的,同样的SQL用数据库执行速度很快.

@Dishone
Copy link

Dishone commented Mar 9, 2021

@ysq5202121 设置主键了吗?索引缓存清空下试试

@ysq5202121
Copy link
Author

@ysq5202121 设置主键了吗?索引缓存清空下试试
主要用程序就慢起来了,主键都设置了,2W数据量不大的,就算没有索引也应该走的不慢

@ysq5202121
Copy link
Author

大佬们自己可以测试下呗,很容易测试出来

@Dishone
Copy link

Dishone commented Mar 17, 2021

@ysq5202121 我这里分页分表每次重建索引速度就回来了

@ysq5202121
Copy link
Author

@ysq5202121 我这里分页分表每次重建索引速度就回来了

大佬多少数据啊,问题是同样的数据在数据库执行没有问题。
目前采用AsParallel()并行查询可以解决这个问题.
linqtosql 对于后面页数会越来越费劲,采用并行查询可以解决这个问题.

@ysq5202121
Copy link
Author

///


/// 获取分页数据(包括总数量)
/// 采用并行查询
///

/// 泛型
/// 数据源
/// 分页参数
///
public static async Task<PageResult> GetPageResultByParallelAsync(this IQueryable source, PageInput pageInput)
{
int count = await source.CountAsync();
var list = source.OrderBy($@"{pageInput.SortField} {pageInput.SortType}")
.AsParallel().Skip((pageInput.PageIndex - 1) * pageInput.PageRows)
.Take(pageInput.PageRows)
.ToList();
return new PageResult { Data = list, Total = count };
}

@Dishone
Copy link

Dishone commented Mar 18, 2021

@ysq5202121 不应该在SQL上使用PLINQ该服务器执行查询。如果建立多个并发连接,则会增加锁定和争用。一个单一的查询负载的多个项目比N个并发更快。如果查询缓慢,请检查原因是否缺少索引太复杂了吗?实际的SQL是什么样的?

@ysq5202121
Copy link
Author

我瞧瞧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants