Java中大字符串拆分问题

目前的情况是数据库有个blob字段,里边是逗号分隔的一个个数据,
想要取出来用逗号循环取出每个数据,当作条件去另一个表查询,
我想了下因为blob是存的byte,所以取出来了转成了String,但是这个String
我想了下,第一种是再用split转成数组,但是如果按照极限的大小比方说4G来算,
是不是浪费空间;第二种想用String的substring方法,但是substring本质是new String()
会不会更浪费?那如果是在循环中每次substring之后,让字符串引用=null这种释放内存
能不能解决问题? 第三种 想把大字段写到文件,一点一点解析文件这样应该没问题吧,
但是要是高并发的话,又太占IO了,感觉很low。
所以是实在不知道该怎么整。。。

5个回答

本身设计上就有点问题,这么大的字段,存到数据库,一般就是只读取等做显示,你这里要做分割,就没有什么特别好的方法来提高性能,一般可以先就用split等分割字符串,然后再看看具体性能瓶颈等在什么地方,然后再想办法优化。

qq_41812457
qq_41812457 嗯 这样行,兄弟有没有类似的代码借鉴下
大约一年之前 回复
oyljerry
oyljerry 回复qq_41812457: 可以把你需要后面查询的部分,拆分开来放到一个单独的表的各个列。这样就是多个表join查询
大约一年之前 回复
qq_41812457
qq_41812457 我单独拆个表出来装大字段怎么样?
大约一年之前 回复
qq_41812457
qq_41812457 确实,当初这么设计也考虑了这一点,因为考虑了下如果不放在大字段,而是将大字段的各个数据拆分成单独的数据通过表中的每一行来显示,这样又感觉表里边的冗余数据太多,所以到底该怎么设计比较好呢?
大约一年之前 回复

你的大字段是一段文本?大字段构造查询寻条件,每个逗号分隔的字段都可能作为查询条件还是,只是部分?

zhaomin_g
_赵明 回复qq_41812457: 两张表:歌单表和歌曲表。歌单表有有3个信息:一个是歌单id,歌单名称,歌曲id。歌曲区表有两个信息:歌曲名称和歌曲id
大约一年之前 回复
qq_41812457
qq_41812457 a表是歌单信息,一个字段存放歌单包含的歌曲ID,每个歌曲id用逗号分隔,分别取出到歌曲表查询相关信息
大约一年之前 回复

感觉用存储过程好一点吧

qq_41812457
qq_41812457 能细致的描述下么
大约一年之前 回复

字符串的分隔没有想到优化方案,但是分隔后的查询可以使用多线程,应该可以优化一部分

首先将这么大的字符串放在一个字段里肯定是有问题的,像你说的一个字符串有4G,如果jvm堆内存有8G,两个并发就能内存溢出。
放在文件系统中更合适,数据库只存储文件的路径或URI,这样在处理字符串就可以边读取边解析。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!