日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core ORM 类库Petapoco中对分页Page添加Order By对查询的影响

發布時間:2023/12/4 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .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对查询的影响的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。