SqlSugar分页查询
同步分页
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 1 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的时间比查询数据的时间更长
SqlSugar分页查询的更多相关文章
- SqlSugar常用查询实例-拉姆达表达式
SqlSugar支持拉姆达表达式查询,匿名对象参数等,相对还是比较方便好用的. 一.查询列表: //查询列表 SqlSugarClient db = SugarContext.GetInstance( ...
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
- 用Hibernate和Struts2+jsp实现分页查询、修改删除
1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...
- MySQL、Oracle和SQL Server的分页查询语句
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...
- 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历
分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...
- mysql 分页查询
mysql,; : mysql,; -last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql; 个记录行 ,n. 动态传参的分页查询 SELECT * FROM table LI ...
- MongoDB 分页查询的方法及性能
最近有点忙,本来有好多东西可以总结,Redis系列其实还应该有四.五.六...不过<Redis in Action>还没读完,等读完再来总结,不然太水,对不起读者. 自从上次Redis之后 ...
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- SubSonic3.0插件分页查询速度测试
使用SubSonic3.0一段时间了,一直都想找机会测试一下各种查询分页速度,对比一下插件的查询效率到底怎么样,所以昨天写好了测试程序,准备好1K.1W.10W.50W和100W记录的数据表,早上详细 ...
- Node.js、express、mongodb 实现分页查询、条件搜索
前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...
随机推荐
- Spring Boot Admin 配置应用
Spring Boot Admin 监控SpringBoot 服务的运行情况 https://codecentric.github.io/spring-boot-admin/2.3.0/#spring ...
- python 读取数据调翻译更新表字段
import time import requests import pymysql import datetime import random from hashlib import md5 imp ...
- Python中字符前添加r,b,u,f前缀的含义
1.在python字符串前添加r,意思为消除转义字符 2.在python字符串前添加f,意思为支持大括号内的python 表达式. 3.在python字符串前添加b,意思为字符串类型为byte类型,在 ...
- python+requests+unittest+htmltestrunner+Excel生成接口自动化的测试框架
Python+Requests+Unittest+Excel+HtmltestRunner生成自动化测试框架 流程 1.接口文档 2.读取接口文档 3.封装request的类 4.unittest类 ...
- Spring 学习笔记(4)依赖注入 DI
本篇文章主要对 Spring 框架中的核心功能之一依赖注入 (DI,Dependency Injection) 进行介绍,也是采用 理论+实战 的方式给大家阐述其中的原理以及明确需要注意的地方. 相关 ...
- freeswitch on centos dockerfile模式
概述 freeswitch是一款简单好用的VOIP开源软交换平台. centos7 docker上编译安装fs的流程记录,本文使用dockerfile模式. 环境 docker engine:Vers ...
- idea安装并使用maven依赖分析插件:Maven Helper
本文为博主原创,转载请注明出处: 在maven工程中,经常会查看maven的依赖树,在没使用该插件时,需要maven dependency:tree命令进行查看依赖树, 通过maven helper ...
- 面试官:Redis持久化能关吗?怎么关?
数据持久化是指将数据从内存中,保存到磁盘或其他持久存储介质的过程,这样做的目的是为了保证数据不丢失. 而 Redis 的持久化功能默认是开启的,这样做的目的也是为了保证程序的稳定性(防止缓存雪崩.缓存 ...
- Python追踪内存占用
技术背景 当我们需要对python代码所占用的内存进行管理时,首先就需要有一个工具可以对当前的内存占用情况进行一个追踪.虽然在Top界面或者一些异步的工具中也能够看到实时的内存变化,还有一些工具可以统 ...
- linux环境C语言实现:h264与pcm封装成mp4视频格式
前言 H.264是压缩过的数据,PCM是原始数据,MP4是一种视频封装格式.实际H.264与PCM不能直接合成MP4格式,因为音频格式不对.这里需要中间对音频做一次压缩处理.基本流程为:将PCM音频数 ...