当前位置: 首页 > news >正文

wordpress多站模式wordpress支付后可见

wordpress多站模式,wordpress支付后可见,wordpress 用户注册,宁波外贸公司黄页概要 从EF Core 5.0中#xff0c;引入了拆分查询策略#xff0c;该策略可以显著的提升多表查询的效率。本文主要介绍该策略的使用场景和基本使用方法。 代码和实现 使用场景 该策略主要使用在涉及多表连接查询的场景。本例的场景是这样#xff0c;一个银行分行拥有多个设…概要 从EF Core 5.0中引入了拆分查询策略该策略可以显著的提升多表查询的效率。本文主要介绍该策略的使用场景和基本使用方法。 代码和实现 使用场景 该策略主要使用在涉及多表连接查询的场景。本例的场景是这样一个银行分行拥有多个设备例如ATM机麦当劳优惠劵ATM机或支票读取机。按照设备的不同每种设备对应一个数据表。 如果查询分行包含的全部设备需要多个数据表的联接基本代码如下 public async TaskListBranch GetBranches() {ListBranch branches await _context.SetBranch().Where(b b.IsDeleted false).Include(b b.Atms).Include(b b.Cdms).Include(b b.MCAtms).ToListAsync();return branches;}我们先看一下如果不加拆分策略生成的单一SQL如下 SELECT [t].[Id], [t].[Address], [t].[IsDeleted], [t].[Name], [t].[Rowversi on], [t].[hasChequeService], [t].[hasCreditCardService], [t0].[Id], [t0].[Branch Id], [t0].[DeviceStatus], [t0].[IsDeleted], [t0].[Name], [t0].[Rowversion], [t0] .[SupportForeignCurrency], [t1].[Id], [t1].[BranchId], [t1].[CurrencyType], [t1] .[DeviceStatus], [t1].[IsDeleted], [t1].[Name], [t1].[Rowversion], [t2].[Id], [t 2].[BranchId], [t2].[Campaign], [t2].[Coupon], [t2].[DeviceStatus], [t2].[IsDele ted], [t2].[Name], [t2].[Rowversion], [t2].[SupportForeignCurrency]FROM [tt_branch] AS [t]LEFT JOIN [tt_atm] AS [t0] ON [t].[Id] [t0].[BranchId]LEFT JOIN [tt_check_device] AS [t1] ON [t].[Id] [t1].[BranchId]LEFT JOIN [tt_mcatm] AS [t2] ON [t].[Id] [t2].[BranchId]WHERE [t].[IsDeleted] CAST(0 AS bit)ORDER BY [t].[Id], [t0].[Id], [t1].[Id]我们可以看到EF Core是使用的左联方式加载相关的设备数据表。 现在我们尝试增加拆分策略代码如下 public async TaskListBranch GetBranches() {ListBranch branches await _context.SetBranch().Where(b b.IsDeleted false).AsSplitQuery().Include(b b.Atms).Include(b b.Cdms).Include(b b.MCAtms).ToListAsync();return branches; }info: Microsoft.EntityFrameworkCore.Database.Command[20101]Executed DbCommand (119ms) [Parameters[], CommandTypeText, CommandTime out30]SELECT [t].[Id], [t].[Address], [t].[IsDeleted], [t].[Name], [t].[Rowversi on], [t].[hasChequeService], [t].[hasCreditCardService]FROM [tt_branch] AS [t]WHERE [t].[IsDeleted] CAST(0 AS bit)ORDER BY [t].[Id] info: Microsoft.EntityFrameworkCore.Database.Command[20101]Executed DbCommand (9ms) [Parameters[], CommandTypeText, CommandTimeou t30]SELECT [t0].[Id], [t0].[BranchId], [t0].[DeviceStatus], [t0].[IsDeleted], [t0].[Name], [t0].[Rowversion], [t0].[SupportForeignCurrency], [t].[Id]FROM [tt_branch] AS [t]INNER JOIN [tt_atm] AS [t0] ON [t].[Id] [t0].[BranchId]WHERE [t].[IsDeleted] CAST(0 AS bit)ORDER BY [t].[Id] info: Microsoft.EntityFrameworkCore.Database.Command[20101]Executed DbCommand (3ms) [Parameters[], CommandTypeText, CommandTimeou t30]SELECT [t0].[Id], [t0].[BranchId], [t0].[CurrencyType], [t0].[DeviceStatus ], [t0].[IsDeleted], [t0].[Name], [t0].[Rowversion], [t].[Id]FROM [tt_branch] AS [t]INNER JOIN [tt_check_device] AS [t0] ON [t].[Id] [t0].[BranchId]WHERE [t].[IsDeleted] CAST(0 AS bit)ORDER BY [t].[Id] info: Microsoft.EntityFrameworkCore.Database.Command[20101]Executed DbCommand (5ms) [Parameters[], CommandTypeText, CommandTimeou t30]SELECT [t0].[Id], [t0].[BranchId], [t0].[Campaign], [t0].[Coupon], [t0].[D eviceStatus], [t0].[IsDeleted], [t0].[Name], [t0].[Rowversion], [t0].[SupportFor eignCurrency], [t].[Id]FROM [tt_branch] AS [t]INNER JOIN [tt_mcatm] AS [t0] ON [t].[Id] [t0].[BranchId]WHERE [t].[IsDeleted] CAST(0 AS bit)ORDER BY [t].[Id] 我们可以看到生成的查询语句进行了拆分在查询到现有的分行数据后 分别对不同的设备表进行了内联查询。 拆分查询的好处就是每次以内联的方式只联接一张表避免同时左联多个可能很大的表从而引发的性能问题。 另一个好处如下 public async TaskListBranch GetBranches() {ListBranch branches await _context.SetBranch().Where(b b.IsDeleted true).AsSplitQuery().Include(b b.Atms).Include(b b.Cdms).Include(b b.MCAtms).ToListAsync();return branches;}如果在第一个表中没有查询到数据后面的联表操作也就不会进行这样如果后面有很大的字典表根本就不会再去查询从而提高的查询的性能。 该查询生成的SQL如下 info: Microsoft.EntityFrameworkCore.Database.Command[20101]Executed DbCommand (256ms) [Parameters[], CommandTypeText, CommandTime out30]SELECT [t].[Id], [t].[Address], [t].[IsDeleted], [t].[Name], [t].[Rowversi on], [t].[hasChequeService], [t].[hasCreditCardService]FROM [tt_branch] AS [t]WHERE [t].[IsDeleted] CAST(1 AS bit)ORDER BY [t].[Id] 上面的代码中只有分行的查询因为分行查询结果为空所以就直接返回不需要再进行后面的查询。 拆分查询的副作用 由于拆分策略将原有的单次查询分割成多次数据库交互查询每次的查询结果将被放到缓存中这样如果查询过的数据表在结果汇总返回之前又被修改可能会导致数据一致性的问题。 在分页和排序方面如果涉及分页必须保证排序方式的唯一性如果排序的内容相同则无法保证每次的查询结果都是一样的即使数据没有被修改过也无法保证。所以如果涉及分页请慎用该策略。
http://www.pierceye.com/news/608025/

相关文章:

  • 网站开发需要什么资质天马行空网站建设
  • 猎聘网网站建设目标怎么做网站上的模拟动画
  • 南通制作企业网站福州做网站设计
  • 上什么网站做会计教育wordpress cookies
  • 山东网站备案号四川省建筑信息网
  • 网站开发可以用哪些语言中国十二冶金建设有限公司网站
  • 中药网站模板襄阳seo优化服务
  • 做爰片免费观看网站会展企业网站建设方案
  • 国内空间没备案可以打开网站吗dw做网站 怎么做背景图片
  • host绑定网站国外网站风格
  • 安顺建设局网站wordpress 分页
  • 重庆做网站个人外网登录不了WordPress
  • 医药平台网站建设网站排名做不上去
  • 网站关键词优化培训怎样使用wordpress
  • wordpress多站做网站空间百度云和阿里云区别
  • 衡水企业网站制作公司3000块钱在朋友圈投放广告
  • 做网站没有公网北京网页制作教程
  • 运城哪家做网站的公司好小商铺装修
  • 如何访问win7下做的网站时间轴网站模板
  • html5网站制作软件做app找哪个网站吗
  • 网站名称怎么备案外贸商城网站模板
  • 网页设计网站网站建设课程设计客户关系管理流程图
  • 网站开发遇到的难题品牌策划公司有哪些
  • 网站如何做视频链接网络服务器可提供的常见服务
  • 做二手钢结构网站有哪些网站建设开发ppt
  • 做网站分什么软件免费备案网站空间
  • 网站建设公司大全如何制作网站视频的软件
  • 手机网站开发有前途软件开发服务费税率
  • 代做网站的公司有哪些logo一键生成器不要钱的
  • 网站建设和编程的区别游戏网站模板html