首页 > 数据库 >SqlSugar分页查询

SqlSugar分页查询

时间:2024-01-16 15:12:02浏览次数:21  
标签:分页 pageSize int 查询 ToPageList Queryable SqlSugar Name

同步分页

 int pagenumber= 1; // pagenumber是从1开始的不是从零开始的  int pageSize = 20;  int totalCount=0;  //单表分页  var page = db.Queryable<Student>().ToPageList(pagenumber, pageSize, ref totalCount);  //如果SqlServer不想有Rownumber可以用 ToOffsetPage 较新版本支持        //多表分页  var list = db.Queryable<Student>().LeftJoin<School>((st,sc)=>st.SchoolId==sc.Id)  .Select((st,sc)=>new{Id=st.Id,Name=st.Name,SchoolName=sc.Name})  .ToPageList(pageIndex, pageSize, ref totalCount);

 

异步分页

 RefAsync<int> total = 0;//REF和OUT不支持异步,想要真的异步这是最优解  Db.Queryable<Order>().ToPageListAsync(pagenumber, pageSize, total);//ToPageAsync

 

生成的Sql

  SELECT FROM              (SELECT [ID],[SchoolId],[Name],[CreateTime],ROW_NUMBER()               OVER(ORDER BY GetDate())AS RowIndex FROM [STudent]) T    WHERE RowIndex BETWEEN AND 20

 

SqlSever2012分页

5.0.3.2支持

把  ToPageList 换成  ToOffsetPage   //offest分页

 

Oracle高性能分页 

新功能 : 5.1.2.6-preview03

Oracle分了2种分页,特殊情况下性能慢可以换下面这种

把  ToPageList 换成  ToOffsetPage   //offest分页

 

获取行号

方式1:只支持SqlServer或者Oracle  ( row_index )

[SugarColumn(IsIgnore=true)]//需要加上 public int RowIndex{get;set;} //行号 序号   db.Queryable<Student>().ToPageList(pageIndex, pageSize, ref totalCount)

方式2:都通用

//其他数据库可以这么实现  int i = 1;  var getAll = db.Queryable<Order>().Mapper((it,cache)=> {                 it.num= i;//有分页的话需要计算一下 (pageindex-1)*pagesize+i                 i++;   }).ToList();

方式3:开窗口函数 (数据库需要支持开窗口函数才能用)

   //开窗口函数实现 //index  =  SqlFunc.RowNumber($"{it.Id} asc ,{it.Name} desc ");

 

Count为什么不是long

答: 1亿数据Count就要1分钟,别说int.max的20亿数据了,所以超过1000万以上的查询就不建议查询count,因为count的时间比查询数据的时间更长

 

标签:分页,pageSize,int,查询,ToPageList,Queryable,SqlSugar,Name
From: https://www.cnblogs.com/yswenli/p/17967705

相关文章

  • SqlSugar联表查询
    Join用法语法糖1、2和3在WhereOrderByGroupBySelect用法都一样的,他们区别就在JOIN的方式不一样,其它都一样语法糖1  优点:好理解,5个表以内的联表非常爽,支持功能全缺点: 联表超过5个以上的表后(x,b,c...) 会比较难看,语法糖2可以弥补表和表的左连接  新语法糖 5.0.......
  • SqlSugar入门
    SqlSugar入门创建对象你可以使用SqlSugarClient(new模式)或者 SqlSugarScope(单例) 对数据库进行增、删、查、改等功能注意:除了名字和使用模式不同,功能和API都一模一样SqlSugarClient(new模式)优点:性能比SqlSugarScope有5%左右提升缺点:db不能跨上下文使用,需要new......
  • GOrm多对多(关联查询)
    一、概述现有两张表,一张表代表章节(chapter)、另外一张表代表集(episode)。一个章节中包含多集,一个集中有可能有视频也有可能没有视频,视频表(video)。表结构如下:1.章节表(chapter),ps:一个章节中包含了多集2.集表(episode),集中有视频3.视频表(video) 要求:查......
  • [FAQ] Docker查询出所有的停止容器并移除
     $ dockerrm`dockercontainerls-a--filter"status=exited"|awk'{print$1}'|sed'1,1d'|xargs` Ref:phvia/dkcRef:[Shell]字符截取命令:cut,printf,awk,sedRef:使用nodejs的puppeteer库使用完关闭后,linux上面有很多chrome进程Link:https......
  • Java 将所有的数据信息查询出来 ,进行映射
    查询出所有组织结构的数据,列表显示时进行映射 该代码查询的参数是逗号相隔的多个数据//查询对应组织机构List<Map<String,Object>>deptList=businessManagerMapper.querySysDept();Map<Object,List<Map<String,Object>>>groupMap=deptList.stream().co......
  • sqlserver查询最近失败的任务
    selectjob_id,step_name,message,cast((cast(LEFT(run_date,4)ASVARCHAR)+'-'+SUBSTRING(cast(run_dateASVARCHAR),5,2)+'-'+cast(RIGHT(run_date,2)ASVARCHAR))+'......
  • map根据次数排序,同时取最后一次查询到的附件数据
    1、需求是某某供应商可以参与投标多轮;现要求存在多轮报价取最后一次的报价文件;不存在则取第一次的报价;(第一次的投标逻辑与之后的逻辑不一样,存在不同的表里)2、Hashmap是无序的;treeMap是有序的即:Map<String,Object>map=newTreeMap<String,Object>(Collections.reverseOrder(......
  • 数据库查询如何优化?
    索引优化:索引可以加速查询速度,但是索引的使用也会带来一些开销。因此,需要根据查询的情况对索引进行优化,比如对经常使用的字段进行索引,或者使用覆盖索引等。数据库设计优化:数据库的设计也会影响查询的性能。比如对于经常需要联表查询的情况,可以将需要联表的字段放在同一张表中,或......
  • openGauss学习笔记-198 openGauss 数据库运维-常见故障定位案例-分析查询效率异常降低
    openGauss学习笔记-198openGauss数据库运维-常见故障定位案例-分析查询效率异常降低的问题198.1分析查询效率异常降低的问题198.1.1问题现象通常在几十毫秒内完成的查询,有时会突然需要几秒的时间完成;而通常需要几秒完成的查询,有时需要半小时才能完成。198.1.2处理办法通......
  • C#中var关键字详解:强类型、匿名类型和LINQ查询的妙用!
     在C#中,var关键字是强类型的,因为它在编译时会根据变量的初始化表达式推断出变量的实际类型,并且一旦确定了类型,就不能再更改。这种类型推断是在编译时进行的,因此代码中的变量在运行时是具有明确定义类型的。下面是一个简单的示例,说明var的强类型特性以及使用时的一些注意事项:......