介绍

最近一直在使用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对查询的影响相关推荐

  1. OEA ORM中的分页支持

    本篇博客主要描述分页的常见技术方案,以及在 OEA 框架中的分页的应用及实现原理. 分页的几种方案 分页是解决大数据量显示的有效方法.根据分页技术应用的位置不同,大致可以把分页分为以下几种: 界面层分 ...

  2. 【译】微型ORM:PetaPoco

    PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项--单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的 ...

  3. 轮子来袭 vJine.Core Orm 之 01_快速体验

    vJine.Core 是.Net环境下C#类库,在其包含的众多功能中ORM功能尤为突出,现简介如下. 一.支持的数据库: SQLite, MySQL, MS SQL, Oracle. 二.使用方法: ...

  4. ASP.NET Core实现类库项目读取配置文件

    前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...

  5. SSH2+Daoz项目中的分页查询

    Page.java Java代码   import java.util.List; /** * 分页Page类 * @author zhxing * * @param <T> */ pub ...

  6. java中pageInfo分页带条件查询+查询条件的回显

    代码如下:解析在下边 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %&g ...

  7. java中的分页 效率考虑_面试官:数据量很大,分页查询很慢,有什么优化方案?...

    当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询.对于数据库分页查询,也有很多种方法和优化的点. 下面简单说一下我知道的一些 ...

  8. 分页技巧_实现第一个分页功能(回复列表中的分页)

    分页技巧_实现第一个分页功能(回复列表中的分页) ======================================== 假设共25条数据,每页显示10条,则共3页 first  max - ...

  9. [数据库]Oracle和mysql中的分页总结

    Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...

最新文章

  1. 零基础入门学习Python(26)-文件1
  2. MySQL主从数据库同步延迟问题解决
  3. kafka学习(一)初识kafka
  4. c语言斐波那契数列_神奇的数列——斐波那契数列
  5. 【学习笔记】原根 / BSGS / 扩展BSGS证明及模板
  6. 焦作的计算机三级考试考点,3月河南计算机等级考试考点分布情况
  7. weblogic部署,常见错误解决二——ClassCastException
  8. java爬虫出发onclick事件_java爬虫(五)利用selenium 模拟点击获取动态页面的内容...
  9. 基于java疫情防控管理系统
  10. 数据库索引选择的探索(二)之直方图
  11. 应广单片机 c语言,应广单片机 MINI-C编程指南.pdf
  12. linux dd iflag oflag,【转】dd命令详解及利用dd测试磁盘性能
  13. 凸显计算机学院特色的剧本,高职院校非计算机专业计算机课程的教学改进策略探析 - 计算机教育论文大全 - 小品台词 - 中国国际剧本网...
  14. 线性代数考研笔记(一)
  15. Python for Data Analysis:Numpy
  16. u盘文件突然不见了如何找回呢?
  17. c++ 三次多项式拟合_从寻找谷神星的过程,谈最小二乘法实现多项式拟合
  18. 第一章:渗透测试的本质信息收集
  19. 『HTML5梦幻之旅』-滚动播放的幻灯片效果
  20. 2011税率改革 3500起征 个人所得税计算

热门文章

  1. 如何在Ubuntu上创建桌面快捷方式
  2. 活水亭观书有感其一_如何将iPad置于“信息亭”模式,将其限制为单个应用程序...
  3. Logstash 命令行参数
  4. Java并发包--线程池框架
  5. React-Native视频组件react-native-video使用(安卓版)
  6. 用sort()方法随机打乱数组
  7. 为什么PostgreSQL比MongoDB还快之完结篇(深挖单点索引查询)
  8. 理解浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
  9. arcengine 将地图文件保存为图片(包括各种图片格式)
  10. 如何让代码段只运行在 Debug 模式下 ?