存储过程与数组连接查询

Posted

技术标签:

【中文标题】存储过程与数组连接查询【英文标题】:stored procedure versus queries for array concatanation 【发布时间】:2016-10-29 07:07:54 【问题描述】:

我有一个数据库,其中时间序列数据被分成大小均匀的块,以数组的形式存储在 postgres 中。

我需要任意提取它们的范围并将返回的集合连接到一个数组中。它们有一个偏移量字段,因此给定起始偏移量和长度,您可以找到您正在寻找的集合的任何部分。

哪个更好:

    编写查询以返回每个单独的数组并在软件中连接

    使用一个存储过程,它接受一个起点和长度,并在返回整个数组之前在内部进行连接

【问题讨论】:

【参考方案1】:

在这种情况下,“更好”是一个相当不具体的形容词。

如果您要求审美判断、代码简单性和可维护性,我觉得无法做出明确的判断。我的直觉是两者都很相似。

如果您问的是良好的性能,我建议您运行一个简单的测试。但即使没有测试,我也会说这两种解决方案都不是最佳的,您应该将其编写为单个 SQL 语句。

如果您询问可移植性,答案取决于移植到另一个数据库(这将有利于应用软件解决方案)还是移植到不同的编程语言(在这种情况下,数据库更可取)。

【讨论】:

以上是关于存储过程与数组连接查询的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 常用的查询函数存储过程等

解析 SQL Server 查询而不针对数据库连接执行查询 [重复]

MySQL多表关联查询与存储过程

我可以在 Redshift 上的存储过程中将两个查询连接在一起吗?

使用 OleDB 列出所有存储过程和查询时出现不明确的外部连接错误

09_MySQL笔记-组函数-GROUP BY-LIMIT-多表连接查询-子查询-UNION-索引-视图-存储过程