一张表数据分到几张表性能优化

最近在做一个银行项目,从一张表(CCB_CREDIT_TRX)里要往七、八张表写数据,

一开始的做法是把这张表对应的实体select出来,放到一个List集合中,再对这个LIST

List<CcbCreditTrx> list = new ArrayList<CcbCreditTrx>;//对这个List遍历for(CcbCreditTrx ccbCreditTrx:list) {  //这里处理对其他表的操作   //表A  。。。。
   //表B  。。。。
   //表C  。。。。
}

建议做法

先查出全部A,全部B,全部C

List<A> listA = aDao.findAll();

List<B> listB = bDao.findAll();

List<C> listC = cDao.findAll();

for(CcbCreditTrx ccbCreditTrx:list) {
  //装个计数器,每500个提交一次  process(listA,listB,listC,ccbCreditTrx);

}

private void process(List<A> alist,List<B> blist,List<C> clist) {// 处理}
)
时间: 2024-11-10 04:43:26

一张表数据分到几张表性能优化的相关文章

13 | 为什么表数据删掉一半,表文件大小不变?

经常会有同学来问我,我的数据库占用空间太大,我把一个最大的表删掉了一半的数据,怎么表文件的大小还是没变? 那么今天,我就和你聊聊数据库表的空间回收,看看如何解决这个问题. 这里,我们还是针对MySQL中应用最广泛的InnoDB引擎展开讨论.一个InnoDB表包含两部分,即:表结构定义和数据.在MySQL 8.0版本以前,表结构是存在以.frm为后缀的文件里.而MySQL 8.0版本,则已经允许把表结构定义放在系统数据表中了.因为表结构定义占用的空间很小,所以我们今天主要讨论的是表数据. 接下来,

用PL/SQL DEVELOPER把表数据复制到另一个表中

1.创建新表,business_copy,并复制bisiness表的数据 CREATE TABLE BUSINESS_COPY AS SELECT * FROM BUSINESS; 注释:此SQL语句只是创建了表和复制了表的数据,但是没有把表的约束复制过来. 2.在PL/SQL DEVELOPER删除表 例如删除表business,可执行一下操作, 1)DROP TABLE BUSINESS; 2)找到此表,单击右键,选择跨界删除操作. 3.在PL/SQL DEVELOPER快速创建表. 4.如

mysql批量复制表数据到另外几张表的写法

delimiter // create procedure oneKey(in newNames varchar(1000),in oldName varchar(250),in id INT,in count INT) BEGIN declare num int; -- 定义变量给循环使用 set num = 0; while num < count do SET @sqlStmt = CONCAT('insert into ', -- 要动态修改表名需要concat()方法 substrin

sql 表数据转移另一张表

if not exists(select * from syscolumns where id=object_id('REMOTEDETECTION_2018')) begin SELECT * INTO  REMOTEDETECTION_2018  FROM REMOTEDETECTION  where 1=0  end; insert into RemoteDetections(DETECTIONSTATE,PASSDATETIME,VLPN,VLPNCOLOR,FUELTYPE,BZTYP

MySQL单表数据量过千万,采坑优化记录,完美解决方案

问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务. 问题前提:老系统,当时设计系统的人大概是大学没毕业,表设计和sql语句写的不仅仅是垃圾,简直无法直视.原开发人员都已离职,到我来维护,这就是传说中的维护不了就跑路,然后我就是掉坑的那个!!! 我尝试解决该问题,so,有个这个日志. 方案概述 方案一:优化现有mysql数据库.优点:不影响现有业务

Zabbix的history相关数据表数据太大,执行表分区操作过程

一.查询zabbix数据库大小 mysql> select table_schema, concat(truncate(sum(data_length)/1024/1024,2),' mb') as data_size,concat(truncate(sum(index_length)/1024/1024,2),'mb') as index_size from information_schema.tables group by table_schema order by data_size d

用倍增方式查询本表数据再插入到本表,用作测试数据

INSERT INTO `user`( `name`, `password`, `sex`, `age`, `email`, `mypage`, `salary`) SELECT `name`, `password`, `sex`, `age`, `email`, `mypage`, `salary` FROM `user` 注意,不要把主键id放进去

discuz X3.1 关于分表 和 分表数据迁移

// *********** 关于读取分表的数据*********** { // forum_thread 分表代码片段 -- 帖子列表 { // 定位某个板块的帖子落在哪个表(forum_thread_0) // ... // 到指定的表(forum_thread_0.forum_thread_1)中,读取帖子列表 // 注意:(分表的时候,要分得刚刚好,同一个板块的帖子不能跨表,不然会查不到) $threadlist = array_merge($threadlist, C::t('foru

MySQL DDL操作--------指定表数据文件存放目录最佳实战

1. 背景 * 在MYSQL中建立一张数据表,在其数据目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,.frm文件跟数据库存储引擎无关,也就是任何存储引擎的数据表都必须有.frm文件,命名方式为数据表名.frm,如user.frm. .frm文件可以用来在数据库崩溃时恢复表结构. * MySQL文件包括MySQL所建数据库文件和MySQL所用引擎创建的数据库文件. * .frm 文件与操作系统和数据库引擎无关,都有这么