存储过程与数组连接查询
Posted
技术标签:
【中文标题】存储过程与数组连接查询【英文标题】:stored procedure versus queries for array concatanation 【发布时间】:2016-10-29 07:07:54 【问题描述】:我有一个数据库,其中时间序列数据被分成大小均匀的块,以数组的形式存储在 postgres 中。
我需要任意提取它们的范围并将返回的集合连接到一个数组中。它们有一个偏移量字段,因此给定起始偏移量和长度,您可以找到您正在寻找的集合的任何部分。
哪个更好:
-
编写查询以返回每个单独的数组并在软件中连接
或
-
使用一个存储过程,它接受一个起点和长度,并在返回整个数组之前在内部进行连接
【问题讨论】:
【参考方案1】:在这种情况下,“更好”是一个相当不具体的形容词。
如果您要求审美判断、代码简单性和可维护性,我觉得无法做出明确的判断。我的直觉是两者都很相似。
如果您问的是良好的性能,我建议您运行一个简单的测试。但即使没有测试,我也会说这两种解决方案都不是最佳的,您应该将其编写为单个 SQL 语句。
如果您询问可移植性,答案取决于移植到另一个数据库(这将有利于应用软件解决方案)还是移植到不同的编程语言(在这种情况下,数据库更可取)。
【讨论】:
以上是关于存储过程与数组连接查询的主要内容,如果未能解决你的问题,请参考以下文章
解析 SQL Server 查询而不针对数据库连接执行查询 [重复]
我可以在 Redshift 上的存储过程中将两个查询连接在一起吗?