我的要求是获取多个表数据(超过20万行)并转换为Json并返回。
我可以通过两种方法达到上述目的(如果有其他建议,请建议我)
a。在查询本身中将数据库数据转换为Json(array_to_json(array_agg()或json_agg()) b。提取数据库数据并使用rowmapper等将其转换为Java对象列表,然后将Java对象列表转换为json。
我的观察与这两种方式有关
a。在查询本身中将数据库数据转换为Json(array_to_json(array_agg()或json_agg()):
1. array_to_json(array_agg()) is taking long time and which is leading to crash my application
2. replaced array_to_json(array_agg()) with json_agg() and query execution is taking long time(infact more than array_to_json(array_agg())) here too.
b。获取数据库数据并使用rowmapper等将其转换为Java对象列表,然后将Java对象列表转换为json:
1. Application crahsed with outofmemory issue while parsing list of java objects(Count would be more than 200K) to Json
数据库:Postgres
查询:
选择array_to_json(array_agg(dev_info))FROM(从device_instance_global中选择*加入device_active_global
在device_instance_global.device_id = device_active_global.device_id上加入dev_management
device_active_global.system_id = dev_management.node_id
在device_active_global.device_code = device_model.device_code上加入device_model
和device_instance_global.device_error_class = device_model.device_severity
其中dev_management.node_type <>'F'由device_instance_global.device_raise_time DESC排序)
dev_info;
选择json_agg(alarm_info)FROM(从device_instance_global选择* *加入device_active_global
在device_instance_global.device_id = device_active_global.device_id上加入dev_management
device_active_global.system_id = dev_management.node_id
在device_active_global.device_code = device_model.device_code上加入device_model
和device_instance_global.device_error_class = device_model.device_severity
其中dev_management.node_type <>'F'由device_instance_global.device_raise_time DESC排序)
dev_info;
请建议我有什么最好的方法来满足我的要求。