表生成文件,一个优化的算法。

IMEI VARCHAR2(30) N IMEI码
AREA_CODE CHAR(3) Y 见地市代码编码
BATCH_CODE VARCHAR2(20) N 批次号
INSERT_TIME DATE N 记录时间
DEAL_FLAG CHAR(1) N 处理标志
FILE_NAME VARCHAR2(50) Y 文件名
RSRV_STR1 VARCHAR2(50) Y 备用1
RSRV_STR2 VARCHAR2(50) Y 备用2
RSRV_FLAG1 CHAR(1) Y 备用标志1
RSRV_DATE DATE Y 备用时间1

这样一张表,要求按批次号分组,生成文件。
文件格式如下

CTRECERR860800000001.TXT

TOTAL_CNT=2

447769804451095,101

447769804451096,102

 

红色字段是批次号

TOTAL_CNT=2这个2是记录数

下面分别为IMEI跟AREA_CODE字段

 

由于数据量有时会比较大,所以会处理得较慢。

开发语言是JAVA,定时在后台处理的程序。

 

如果BATCH_CODE上有索引的话,就先按BATCH_CODE这个字段group by一下。

SQL如下:
[code="sql"]
select BATCH_CODE, count(*)
from table
group by BATCH_CODE
[/code]

会生成两个字段的List,这两个字段分别是BATCH_CODE和count(*)

然后按BATCH_CODE去分别搜索,然后生成txt文件。

SQL如下:

[code="sql"]
select IMEI, AREA_CODE
from table
where BATCH_CODE = ?
[/code]

反正,BATCH_CODE上面有索引的话,效率会蛮快的。