mysql通讯数据包大小,默认1M这么小的,1024byte, show variables like '%max_allowed_packet%'
67108864=65536*1024=64*1024*1024=64M,
一个bigint就是8byte,1000条是,8000byte,约等于8M,我看我们系统代码经常5000一次select出来的报表之类的;
常用的sql分批查询代码:
方式一:
List<TCloudcrmPersonCountPO> lablelists = memberLevelChangeRecordMapper.selectLabelN(map); Integer totalCount= lablelists.size(); if (totalCount <= 0){ LogWriter.info("【DealMembershipLabelService||dealLevelPurchaseLabel】totalCount="+totalCount); labelInfo.setMemberCount(0); return; } // PAGE_NUM=500,分批,update 一次user表,修改标签值字段 Integer totalPages = totalCount % PAGE_NUM == 0 ? totalCount / PAGE_NUM : (totalCount / PAGE_NUM + 1); Integer num = 0; int i; for (i = 0; i < totalPages-1; i++) { List<TCloudcrmPersonCountPO> batchLists = lablelists.subList(i * PAGE_NUM, (i * PAGE_NUM + PAGE_NUM)); map.put("openIds", batchLists); map.put("rmk2", labelInfo.getLabelValue()); num += tJfzwAppUserInfoMapper.initLabelM(map); } List<TCloudcrmPersonCountPO> batchLists2 = lablelists.subList(i * PAGE_NU