MySQL数据库或Java程序中的字符串序列化

MySQL数据库或Java程序中的字符串序列化,java,mysql,string,Java,Mysql,String,我将做一些繁重的工作,将对象序列化保存到字符串中,并保存到数据库中。每个对象大约有100个字符,所有对象都保存在一个单行字段中。有时我想得到子字符串或分割数据,然后在某个位置或其他字符串操作中得到一个片段。这应该在MySQL中完成还是由Java程序完成 还有一种方法可以从功能上优化我的查询,因为字段的预期大小大约为VARCHAR 20k如果使用Java序列化,结果输出是不透明的,也就是说,如果不将其重新加载回Java JVM,就无法查看序列化数据的内部并提取位和段 如果您想在SQL中对数据执行任

我将做一些繁重的工作,将对象序列化保存到字符串中,并保存到数据库中。每个对象大约有100个字符,所有对象都保存在一个单行字段中。有时我想得到子字符串或分割数据,然后在某个位置或其他
字符串
操作中得到一个片段。这应该在MySQL中完成还是由Java程序完成


还有一种方法可以从功能上优化我的查询,因为字段的预期大小大约为
VARCHAR 20k

如果使用Java序列化,结果输出是不透明的,也就是说,如果不将其重新加载回Java JVM,就无法查看序列化数据的内部并提取位和段


如果您想在SQL中对数据执行任何操作,那么它必须以原始(即未序列化)形式存储在数据库中。

如果您想使用mySQL,您可以在每个元素的末尾添加一些内容作为分隔符(我喜欢使用“/”),然后在Java中将字符串拆分为各个部分,将元素存储在arraylist中。@Joris这就是我要做的。例如,我说的是,如果我有100个带分隔符的元素,并且我想从元素72-108获取,或者在元素48处插入字符串,那么速度会更快。从数据库中获取所有字段并在程序中操作它们,或者使用MySQL字符串计算方法,这会更快吗?使用递增int的唯一键将每个元素存储在自己的行中,并且只使用MySQL语句
select textValue from exampleTable where key>71&&key<109
我想您会更快可以使用
&&
,但这是常规用法idea@Joris如果我必须删除一条记录以相应地组织唯一键,我该怎么办?在某些情况下,最好不要删除,而是标记为活动/非活动。在这一点上,我会说构建您的数据库,使其具有三列:key、textValue和active。显然,键是递增的值,textValue是字符串,active是1或0。1处于活动状态,0处于非活动状态。如果要“删除”,只需将textValue的活动值设置为0。然后,您的新mySQL语句将是
selecttextValue from exampleTable where key>71&&key<109 and active=1
我没有使用Java序列化,而是使用我实现的基于字符串的序列化方法来保存由分隔符分隔的对象