Самый эффективный способ получить уникальный список ключей из всех строк в hstore?

Для простоты, скажем, у меня есть таблица с одним столбцом, который является просто hstore. Каков наиболее эффективный способ получить список unqiue всех ключей из всех строк hstore?

например.

my_hstore
------------
a=>1,b=>2
b=>2,c=>3
x=>10,y=>11
y=>11,z=12

Каков наиболее эффективный способ получить список/массив/набор, содержащий (a, b, c, x, y, z)?

Ответы

Ответ 1

Всегда есть прямой подход skeys:

select distinct k
from (
    select skeys(my_hstore) as k
    from your_table
) as dt

И если вам нужен массив, добавьте array_agg:

select array_agg(distinct k)
from (
    select skeys(my_hstore) as k
    from your_table
) as dt