小编Chr*_*itt的帖子

PostgreSQL LIKE 对 ARRAY 字段的查询

有没有办法LIKE在 ARRAY 字段上进行Postgres查询?

目前我想要这样的东西:

SELECT * FROM list WHERE lower(array_field) LIKE '1234%'
Run Code Online (Sandbox Code Playgroud)

目前不需要那么多。但是它应该在 ARRAY 中找到一个匹配的字段。这甚至可能吗?

目前我使用物化视图来生成带有 JOIN 和 a 的“列表”表ARRAY_AGG(),因为我加入了一个表,其中更多的值可能在正确的表上。这会重复左表中的字段,这不是我想要的。

编辑这就是我创建视图的方式(非常缓慢和丑陋):

CREATE MATERIALIZED VIEW article_list_new AS
SELECT a.id, 
       a.oa_nr, 
       a.date_deleted, 
       a.lock, 
       a.sds_nr, 
       a.kd_art_nr, 
       a.kd_art_index, 
       a.kd_art_extend, 
       a.surface, 
       a.execution, 
       a.surface_area, 
       a.cu_thickness, 
       a.endintensity, 
       a.drilling, 
       array_agg(o.id::text) AS offer_list 
FROM article_list a LEFT JOIN task_offer o ON o.article = a.oa_nr 
GROUP BY .....;  
Run Code Online (Sandbox Code Playgroud)

我还需要返回task_offer表的 ID 。

postgresql database-design pattern-matching

13
推荐指数
1
解决办法
2万
查看次数

如何使这个查询使用我的多列索引?

目前,我有一个定义如下的视图:

                       View "public.customer_list"
  Column   |          Type           | Modifiers | Storage  | Description 
-----------+-------------------------+-----------+----------+-------------
 id        | bigint                  |           | plain    | 
 name      | character varying(100)  |           | extended | 
 street    | character varying(100)  |           | extended | 
 zip       | character varying(10)   |           | extended | 
 city      | character varying(100)  |           | extended | 
 country   | character varying(3)    |           | extended | 
 phone     | character varying(100)  |           | extended | 
 mail      | character varying(100)  |           | extended | 
 rating    | integer                 | …
Run Code Online (Sandbox Code Playgroud)

postgresql performance index postgresql-performance

5
推荐指数
1
解决办法
1001
查看次数

从 pg_class.reltuples 获取给定条件下的计数估计值

是否可以reltuples使用附加条件查询给定表的列table.name LIKE 'hello%'

目前在我更大的表上,SELECT count(*)查询需要很长时间,我不需要确切的计数。所以我想知道是否可以WHERE在 the 中添加子句reltuples

postgresql index count

2
推荐指数
1
解决办法
3183
查看次数

postgresql GROUP BY 和最新日期按非 group by 语句过滤?

目前我有下表:

CREATE TABLE demo (
  id SERIAL PRIMARY KEY,
  key TEXT NOT NULL,
  other_key TEXT NOT NULL,
  quantity BIGINT NOT NULL,
  date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
);
Run Code Online (Sandbox Code Playgroud)

现在我想按这样的查询进行分组:

SELECT other_key, SUM(quantity) FROM demo GROUP BY other_key;       
Run Code Online (Sandbox Code Playgroud)

到目前为止,效果很好,但是现在我想按键过滤并打印date表的最新信息,有什么好的方法吗?

伪(将失败,因为密钥不在分组依据中)

SELECT other_key, SUM(quantity), MAX(date) FROM demo GROUP BY other_key WHERE key = ?;    
Run Code Online (Sandbox Code Playgroud)

我最初的想法是子查询:

SELECT other_key, SUM(quantity), MAX(date) FROM (SELECT * FROM demo WHERE key = ?) GROUP BY other_key;
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?那么什么是该表的良好索引呢?

我当前的索引是:

CREATE INDEX demo_all_idx ON …
Run Code Online (Sandbox Code Playgroud)

postgresql

1
推荐指数
1
解决办法
2万
查看次数