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

利用oracle默认事务隔离级别(提交读)提升多表联查速度

利用oracle默认事务隔离级别(提交读)提升查询速度)

背景介绍:
数据量大查询缓慢,添加太多条件,使用IN走了全表查询导致查询速度缓慢。

解决方案:
版本一:
新建临时表,在查询是将数据插入到临时表中,然后内联查询:
以C# 为例

                foreach (var item in boxModel){SFC_QUERY_TEMP temp_label = new SFC_QUERY_TEMP();temp_label.ID = Guid.NewGuid().ToString("N").ToUpper();temp_label.DATETIME_CREATED = DateTime.Now;temp_label.ENTERPRISE_ID = EnterpriseId;temp_label.ORG_ID = OrgId;temp_label.OPERATION_ID = "INSERT";temp_label.QUERY_ID = item.LABEL_NO.ToUpper().Trim();temp_label.USER_CREATED = UserID;temp_box_List.Add(temp_label);}using (MeiCloudDb db = new MeiCloudDb()){db.Insert(temp_box_List);from t1 in db.VM_SFC_BOX_LABEL_LJfrom t20 in db.SFC_QUERY_TEMP.InnerJoin(t => t.ENTERPRISE_ID == t1.ENTERPRISE_ID && t.ORG_ID == t1.ORG_ID && t.QUERY_ID == t1.BOX_NO)select new SFC_BOX_LABEL_MODEL{ WORKSHOP_ID = t1.WORKSHOP_ID}}

这种会比IN查询要快 但是要最后删除临时表中的数据,还是比较麻烦和耗时的,而且在插入临时表,联查表,删除临时表 三个事务前两个事务有问题 会导致临时表有脏数据。
事务生命周期 三个事务
①插入临时表
②联查表
③删除临时表

版本二:


```csharpforeach (var item in boxModel){SFC_QUERY_TEMP temp_label = new SFC_QUERY_TEMP();temp_label.ID = Guid.NewGuid().ToString("N").ToUpper();temp_label.DATETIME_CREATED = DateTime.Now;temp_label.ENTERPRISE_ID = EnterpriseId;temp_label.ORG_ID = OrgId;temp_label.OPERATION_ID = "INSERT";temp_label.QUERY_ID = item.LABEL_NO.ToUpper().Trim();temp_label.USER_CREATED = UserID;temp_box_List.Add(temp_label);}using (MeiCloudDb db = new MeiCloudDb()){//开始事务db.BeginTransaction();//插入数据db.BulkCopy(temp_box_List);from t1 in db.VM_SFC_BOX_LABEL_LJfrom t20 in db.SFC_QUERY_TEMP.InnerJoin(t => t.ENTERPRISE_ID == t1.ENTERPRISE_ID && t.ORG_ID == t1.ORG_ID && t.QUERY_ID == t1.BOX_NO)select new SFC_BOX_LABEL_MODEL{ WORKSHOP_ID = t1.WORKSHOP_ID}//回滚数据db.RollbackTransaction();}

这个会插入临时表,在联查完毕后,直接回滚,临时表中的数据就会取消插入,会保持临时表的洁净,以及事务的安全。
事务生命周期
开启事务–>插入临时表—>根据临时表联查数据----->回滚事务

http://www.lryc.cn/news/357302.html

相关文章:

  • B/S架构+java语言+Mysqladr数 据 库ADR药物不良反应监测系统源码 ADR药物不良反应监测系统有哪些作用?
  • Matlab中% note that Wilkinson notation (‘L1~L4~1‘) is used to specify the model
  • 测试测试测试
  • 动态规划专题
  • .net8.0与halcon编程环境构建
  • 文心智能体平台:快来创建你的Java学习小助理,全方位辅助学习
  • AppInventor2 表格布局的外面的黑框怎么去掉?
  • 爬楼梯(进阶版)
  • echarts-事件
  • 备受推崇的公司文件加密文件推荐榜单
  • QT——QSlider实现,QT滑动控件的使用
  • 【网络协议Http】Http中get,post,put,delete区别
  • 软硬中断区别,磁盘块、扇区、页区别与之间的关系
  • 在线思维导图编辑!3个AI思维导图生成软件推荐!
  • 使用 Ubuntu + Docker + Vaultwarden + Tailscale 自建密码管理器
  • YOLOv7添加注意力机制和各种改进模块
  • 【OpenGL第一个程序】
  • GPT-4O神器来袭!自动生成Figma设计稿,移动端开发瞬间加速!
  • 清华大学提出IFT对齐算法,打破SFT与RLHF局限性
  • TS(TypeScript)中Array数组无法调出使用includes方法,显示红色警告
  • 基于Kafka的日志采集
  • 某烟草企业数字化转型物流信息化咨询项目规划方案(117页PPT)
  • 失落的方舟 命运方舟台服封号严重 游戏封IP怎么办
  • 2.10 mysql设置远程访问权限
  • C# 证件照替换底色与设置背景图---PaddleSegSharp
  • HCIA-HarmonyOS Device Developer 课程大纲
  • 洗地机哪个牌子最好用?十大名牌洗地机排行榜
  • Unity开发——XLua热更新之Hotfix配置(包含xlua获取与导入)
  • Qt 基于FFmpeg的视频转换器 - 转GIF动图
  • HTML新春烟花盛宴