3 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
有一個(gè)更簡(jiǎn)單的方法很丑陋,但我認(rèn)為從技術(shù)上講是正確的:從數(shù)組中提取最大可能的切片,而不是具有計(jì)算范圍的確切切片。它避免了兩個(gè)函數(shù)調(diào)用。
例:
select ('[5:7]={1,2,3}'::int[])[-2147483648:2147483647];
結(jié)果是:
int4
---------
{1,2,3}

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
不知道這是否已經(jīng)涵蓋,但是:
SELECT array_agg(v) FROM unnest('[5:7]={1,2,3}'::int[]) AS a(v);
為了測(cè)試性能,我必須id在測(cè)試表上添加一列。慢。

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
最終,Postgres 9.6 彈出了一些更優(yōu)雅的東西。手冊(cè):
可以省略lower-bound和/或upper-bound切片說(shuō)明符;缺少的邊界將替換為數(shù)組下標(biāo)的下限或上限。例如:
所以現(xiàn)在很簡(jiǎn)單:
SELECT ('[5:7]={1,2,3}'::int[])[:];
與Daniel的硬編碼max數(shù)組下標(biāo)解決方案具有相同的性能-這仍然是Postgres 9.5或更早版本的方法。
- 3 回答
- 0 關(guān)注
- 736 瀏覽
添加回答
舉報(bào)