专门做电子书的网站有哪些,哪些群体对网站开发有需求,室内设计效果图的软件,查看网站服务器版本利用oracle默认事务隔离级别(提交读)提升查询速度)
背景介绍#xff1a; 数据量大查询缓慢#xff0c;添加太多条件#xff0c;使用IN走了全表查询导致查询速度缓慢。
解决方案#xff1a; 版本一#xff1a; 新建临时表#xff0c;在查询是将数据插入到临时表中#…利用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();}这个会插入临时表在联查完毕后直接回滚临时表中的数据就会取消插入会保持临时表的洁净以及事务的安全。 事务生命周期 开启事务–插入临时表—根据临时表联查数据-----回滚事务