.NET Core ORM 类库Petapoco中对分页Page添加Order By对查询的影响
介绍
最近一直在使用Petapoco+Entity Framework Core结合开发一套系统。
使用EFCore进行Code First编码,使用
使用Petapoco进行数据库的常规操作。并且结合PetaPoco.SqlKata的使用,减少了编写SQL语句的工作量,对提升开发效率有很大的帮助。Petapoco对数据库的支持非常的全,包括常规的一下数据库:SQL Server,SQL Server CE,MS Access,SQLite,MySQL,MariaDB,PostgreSQL,Firebird DB和Oracle。当然SQL Server为默认的支持。PetaPoco.SqlKata支持的数据库也是非常全的,包括:SqlServer, MySql, Postgres, Firebird, SQLite, Oracle。
遇到的问题
在数据库操作过程中,发现每个Controller的Index页面加载的非常缓慢,加载完成大约需要5s的时间,在浏览器端等待的时间相对来说是非常长的一个时间。对于出现的问题终于有时间进行解决一下了。
系统运行加载页面耗时情况
先来看一下未使用Order By加载页面的耗时情况,第一个图中涉及的表的主键为guid类型,第二个图中涉及的主键为ulong类型,对于不同的主键进行分页查询时也有较大影响。
使用OrderBy的耗时情况
使用Order by加载页面的耗时情况
解决方法测试耗时
码代码,未有时
对出现的问题,使用StopWatch进行监视运行时间的长短,使用了分页的两种方法,区别是否加Order By
语句,组成成如下四种情况:
PageAsync Order by
PageAsync
Page Order by
Page
代码如下:
运行后台输出的日志信息,可以看到对于是否加Order By
对查询耗时的影响是非常大的,对是否使用异步方法对耗时也有部分的影响
Benchmark测试
对于上述的四种情况再次使用Benchmark进行一次性能测试,对使用的数据表的实体类不在列出:
namespace PetaPocoPageBenchMark
{ class Program { static void Main(string[] args) { var summary = BenchmarkRunner.Run<PetapocoPage>(); Console.WriteLine("Hello World!"); } } public class PetapocoPage { public static IDatabase Database => new Database(DatabaseConfiguration.Build() .UsingConnectionString( "server=192.168.88.3;port=3306;uid=root;pwd=biobase;database=BiobaseProductionQrCode;") .UsingProvider<MariaDbDatabaseProvider>()); [Benchmark] public void PageOrderBy() { Database.Page<ProductManufactureLineDetailDto>(1, 20, "order by CreateDate"); } [Benchmark] public void Page() { Database.Page<ProductManufactureLineDetailDto>(1, 20); } [Benchmark] public void PageOrderByAsync() { Database.PageAsync<ProductManufactureLineDetailDto>(1, 20, "order by CreateDate"); } [Benchmark] public void PageAsync() { Database.PageAsync<ProductManufactureLineDetailDto>(1, 20); } }
}
Benchmark测试结果
对性能测试结果可以看到,使用Order By
对性能的影响确实是非常大。
.NET Core ORM 类库Petapoco中对分页Page添加Order By对查询的影响相关推荐
- OEA ORM中的分页支持
本篇博客主要描述分页的常见技术方案,以及在 OEA 框架中的分页的应用及实现原理. 分页的几种方案 分页是解决大数据量显示的有效方法.根据分页技术应用的位置不同,大致可以把分页分为以下几种: 界面层分 ...
- 【译】微型ORM:PetaPoco
PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项--单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的 ...
- 轮子来袭 vJine.Core Orm 之 01_快速体验
vJine.Core 是.Net环境下C#类库,在其包含的众多功能中ORM功能尤为突出,现简介如下. 一.支持的数据库: SQLite, MySQL, MS SQL, Oracle. 二.使用方法: ...
- ASP.NET Core实现类库项目读取配置文件
前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...
- SSH2+Daoz项目中的分页查询
Page.java Java代码 import java.util.List; /** * 分页Page类 * @author zhxing * * @param <T> */ pub ...
- java中pageInfo分页带条件查询+查询条件的回显
代码如下:解析在下边 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %&g ...
- java中的分页 效率考虑_面试官:数据量很大,分页查询很慢,有什么优化方案?...
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询.对于数据库分页查询,也有很多种方法和优化的点. 下面简单说一下我知道的一些 ...
- 分页技巧_实现第一个分页功能(回复列表中的分页)
分页技巧_实现第一个分页功能(回复列表中的分页) ======================================== 假设共25条数据,每页显示10条,则共3页 first max - ...
- [数据库]Oracle和mysql中的分页总结
Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...
最新文章
- 零基础入门学习Python(26)-文件1
- MySQL主从数据库同步延迟问题解决
- kafka学习(一)初识kafka
- c语言斐波那契数列_神奇的数列——斐波那契数列
- 【学习笔记】原根 / BSGS / 扩展BSGS证明及模板
- 焦作的计算机三级考试考点,3月河南计算机等级考试考点分布情况
- weblogic部署,常见错误解决二——ClassCastException
- java爬虫出发onclick事件_java爬虫(五)利用selenium 模拟点击获取动态页面的内容...
- 基于java疫情防控管理系统
- 数据库索引选择的探索(二)之直方图
- 应广单片机 c语言,应广单片机 MINI-C编程指南.pdf
- linux dd iflag oflag,【转】dd命令详解及利用dd测试磁盘性能
- 凸显计算机学院特色的剧本,高职院校非计算机专业计算机课程的教学改进策略探析 - 计算机教育论文大全 - 小品台词 - 中国国际剧本网...
- 线性代数考研笔记(一)
- Python for Data Analysis:Numpy
- u盘文件突然不见了如何找回呢?
- c++ 三次多项式拟合_从寻找谷神星的过程,谈最小二乘法实现多项式拟合
- 第一章:渗透测试的本质信息收集
- 『HTML5梦幻之旅』-滚动播放的幻灯片效果
- 2011税率改革 3500起征 个人所得税计算
热门文章
- 如何在Ubuntu上创建桌面快捷方式
- 活水亭观书有感其一_如何将iPad置于“信息亭”模式,将其限制为单个应用程序...
- Logstash 命令行参数
- Java并发包--线程池框架
- React-Native视频组件react-native-video使用(安卓版)
- 用sort()方法随机打乱数组
- 为什么PostgreSQL比MongoDB还快之完结篇(深挖单点索引查询)
- 理解浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
- arcengine 将地图文件保存为图片(包括各种图片格式)
- 如何让代码段只运行在 Debug 模式下 ?