假设我有一个查询 Q1,我需要运行如下查询:
Q1
union
select *
from (some query that uses Q1 outcome)
Run Code Online (Sandbox Code Playgroud)
我想这样做:
我怎样才能在 PostgreSQL 上做到这一点?
为了调试目的,我在函数中放置了很多 RAISE NOTICE。我认为这会影响性能,所以应该在生产环境中删除它们。有没有办法仅在特定条件下选择退出这些日志记录/断言功能?
为什么 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) 假设我们有下表:Item、Parent、Child 和 Parent 是 child 的父级。
该项目可以属于父项或子项,但不能同时属于两者。
我还有其他类似于 Item 的表,它们也可以属于父级或子级。
我应该简单地向它们添加 2 个可为空的 FK 吗?
我可以强制使用 db 必须存在父级或子级吗?
首先看看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,,则查询有效。但它没有联合几何。
我有一些表可以从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;将所有属性放在一起,大大减少了磁盘负载。
我正在使用带有 *pg_trgm* 扩展名的 Postgresql 9.1。我需要在基于文本的字段上创建索引。我不需要全文搜索,我使用ILIKE查询来进行搜索。
我会用pg_trgm,但不具有太多的经验gin和gist索引。我会有很多INSERT报表(每天约 15000 条)和很少的UPDATE报表(可能是一周内 1 条或 2 条)。
gin此类表上的索引的索引更新开销是多少?还是gist更合适?
我们有一个使用 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
当我有这个查询时:
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=53在OFFSET 24和中都看到了一条记录OFFSET 36。
如果我ORDER …
pg_dump 有两种主要格式:custom 与 sql。对于自定义,默认情况下是压缩的,如果您尝试打开它,则无法读取。但是转储到这种格式比 SQL 格式更快吗?还是速度一样?
postgresql ×10
performance ×2
aggregate ×1
cte ×1
foreign-key ×1
gin-index ×1
gist-index ×1
index ×1
index-tuning ×1
logs ×1
optimization ×1
pgadmin ×1
plpgsql ×1
postgis ×1
storage ×1
tuning ×1