标签: postgresql

避免重复而不创建视图

假设我有一个查询 Q1,我需要运行如下查询:

Q1
union
select *
from (some query that uses Q1 outcome)
Run Code Online (Sandbox Code Playgroud)

我想这样做:

  • 不创建任何视图
  • 无需运行两次 Q1 查询。

我怎样才能在 PostgreSQL 上做到这一点?

postgresql cte

3
推荐指数
1
解决办法
359
查看次数

如何关闭生产服务器上的所有 RAISE NOTICE?

为了调试目的,我在函数中放置了很多 RAISE NOTICE。我认为这会影响性能,所以应该在生产环境中删除它们。有没有办法仅在特定条件下选择退出这些日志记录/断言功能?

postgresql logs plpgsql

3
推荐指数
1
解决办法
1879
查看次数

为什么 pgAdmin3 默认将 OIDS=FALSE 和 owner 设置为 postgres?

为什么 pgAdmin3postgres在创建和设置表时自动设置表所有者OIDS=FALSE?我是 PostgreSQL 的新手,想知道这种默认行为背后的原因。

-- Table: staging.mytable

-- DROP TABLE staging.mytable;

...

WITH (
  OIDS=FALSE
);

ALTER TABLE staging.mytable
OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)

postgresql pgadmin

3
推荐指数
1
解决办法
3873
查看次数

可选父/子关系表

假设我们有下表:Item、Parent、Child 和 Parent 是 child 的父级。

该项目可以属于父项或子项,但不能同时属于两者。

我还有其他类似于 Item 的表,它们也可以属于父级或子级。

我应该简单地向它们添加 2 个可为空的 FK 吗?

我可以强制使用 db 必须存在父级或子级吗?

postgresql foreign-key database-design

3
推荐指数
1
解决办法
1459
查看次数

选择第一行(分组)+添加聚合函数

首先看看StackOverflow上的这个问题

我希望完成相同的任务,但我还需要ST_Union向我的查询添加聚合函数(PostGIS )。

如何将答案DISTINCT与聚合结合使用...

我试过了:

SELECT DISTINCT ON (name, zonedistrict_id)
       ST_Union(geom) as geom, gid, name, zonedistrict_id, zonestyle_id, longname 
FROM zones
ORDER BY name, zonedistrict_id, zonestyle_id;
Run Code Online (Sandbox Code Playgroud)

哪个尖叫:

column "zones.gid" must appear in the GROUP BY clause or be used in an aggregate function

这很奇怪,因为如果我删除ST_Union(geom) as geom,,则查询有效。但它没有联合几何。

postgresql aggregate window-functions postgis

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

PostgreSQL 中的 CLUSTER USING 表是如何非集群的

我有一些表可以从Postgres SQL 中的CLUSTER ON/CLUSTER USING中受益匪浅:

# CLUSTER table USING index_name;
# ANALYZE VERBOSE table;
# CLUSTER VERBOSE;
Run Code Online (Sandbox Code Playgroud)

维护任务会定期运行 CLUSTER VERBOSE 以保持最新状态。但是,在运行 CLUSTER VERBOSE 之前,是否可以运行测试来查看表的碎片化程度?也许是这样的:

# CLUSTER ANALYZE
table 40000 records. 4000 observed clusters, 5000 potential clusters (20% fragmentation)
Run Code Online (Sandbox Code Playgroud)

请注意,我使用 CLUSTER,因此同时访问的数据被“整理”为少量磁盘块。例如,每个页面都有数千个属性。aCLUSTER page_attribute USING page_id;将所有属性放在一起,大大减少了磁盘负载。

postgresql performance optimization storage disk-structures

3
推荐指数
1
解决办法
1074
查看次数

很少更新和很多插入的索引方法

我正在使用带有 *pg_trgm* 扩展名的 Postgresql 9.1。我需要在基于文本的字段上创建索引。我不需要全文搜索,我使用ILIKE查询来进行搜索。

我会用pg_trgm,但不具有太多的经验gingist索引。我会有很多INSERT报表(每天约 15000 条)和很少的UPDATE报表(可能是一周内 1 条或 2 条)。

gin此类表上的索引的索引更新开销是多少?还是gist更合适?

postgresql index index-tuning gist-index gin-index

3
推荐指数
1
解决办法
844
查看次数

分析 PostgreSQL

我们有一个使用 Python 2.7、Django、PostgreSQL 9.1 和 PostGIS 1.5 构建的系统。在这个系统中有一些广泛的验证过程,这些过程非常密集。

我们的机器:

SO:CentOS 6 硬件:8 核,32GB RAM,4Tb 硬盘;

我们,用于开发和测试,使用默认的 PostgreSQL 配置,我认为有些错误。我想利用我们的硬件提供的全部容量,到目前为止我们没有得到很多流量。当这个版本向公众发布时,将会有很多用户并发。

我们的应用程序有一些队列和异步策略来处理负载,但是,主要问题是:我如何安全地调优 PostgreSQL,运行一些测试,并确保调优在一定程度上有效?

postgresql performance tuning postgresql-9.1 performance-tuning

3
推荐指数
1
解决办法
2728
查看次数

PostgreSQL 不确定的结果排序

当我有这个查询时:

SELECT DISTINCT "spree_products".id FROM "spree_products"
INNER JOIN "spree_variants"
   ON "spree_variants"."product_id" = "spree_products"."id"
  AND "spree_variants"."is_master" = 't'
INNER JOIN "spree_prices"
   ON "spree_prices"."variant_id" = "spree_variants"."id"
INNER JOIN "spree_products_taxons"
   ON "spree_products_taxons"."product_id" = "spree_products"."id" 
INNER JOIN "spree_taxons"
   ON "spree_taxons"."id" = "spree_products_taxons"."taxon_id"
WHERE "spree_taxons"."id" IN (13)
AND "spree_prices"."currency" = 'USD'
AND ("spree_products".deleted_at IS NULL
  or "spree_products".deleted_at >= '2013-08-30 06:23:45.881488')
AND ("spree_products".available_on <= '2013-08-30 06:23:45.881974')
AND (spree_prices.amount IS NOT NULL) LIMIT 12 OFFSET 36
Run Code Online (Sandbox Code Playgroud)

我得到一些以不同偏移量返回的记录。例如,我ID=53OFFSET 24和中都看到了一条记录OFFSET 36

如果我ORDER …

postgresql

3
推荐指数
1
解决办法
4092
查看次数

pg_dump 格式 =&gt; 自定义 vs sql

pg_dump 有两种主要格式:custom 与 sql。对于自定义,默认情况下是压缩的,如果您尝试打开它,则无法读取。但是转储到这种格式比 SQL 格式更快吗?还是速度一样?

postgresql

3
推荐指数
1
解决办法
4726
查看次数