我想让用户可以在价格范围内搜索产品。用户应该能够使用任何货币(美元、欧元、英镑、日元、...),无论产品设置什么货币。因此,产品价格为 200USD,如果用户搜索价格为 100EUR - 200EUR 的产品,他仍然可能找到它。如何让它快速有效?
这是我到目前为止所做的。我保存price,currency code而calculated_price这是在欧元(EUR)的价格是默认货币。
CREATE TABLE "products" (
"id" serial,
"price" numeric NOT NULL,
"currency" char(3),
"calculated_price" numeric NOT NULL,
CONSTRAINT "products_id_pkey" PRIMARY KEY ("id")
);
CREATE TABLE "currencies" (
"id" char(3) NOT NULL,
"modified" timestamp NOT NULL,
"is_default" boolean NOT NULL DEFAULT 'f',
"value" numeric NOT NULL, -- ratio additional to the default currency
CONSTRAINT "currencies_id_pkey" PRIMARY KEY ("id")
);
INSERT INTO "currencies" (id, modified, is_default, value)
VALUES
('EUR', …Run Code Online (Sandbox Code Playgroud) 我正在通过pgAdmin III 在远程 PostgreSQL 数据库上工作。在没有在 pgAdmin 中做任何事情的不长一段时间(比如 10-15 分钟)之后,连接会自动过期。因此,我收到一条错误消息,询问我是否要重新连接。这大约需要 10 秒。并且数据库结构崩溃了,所以我必须重新打开我之前打开的模式。
有没有办法在某处更改超时参数,以防止连接过期更长时间?
我需要在 Postgres 中存储大量文本,主要是命令日志和长时间运行命令的输出,并且需要知道是否有一些设置可以帮助使用 zlib 等工具或其他一些本机空间节省方法透明地压缩数据.
数据主要是只读数据,所以写入不是问题。
我正在使用 PostgreSQL 9.3pg_dump工具仅使用以下方法提取公共模式定义:
pg_dump -s -n public -h host -U postgres --dbname=db > ./schema.sql
Run Code Online (Sandbox Code Playgroud)
但是当我检查时schema.sql,我们的一个观点出现在CREATE TABLE声明中而不是CREATE VIEW声明中。
但是,如果我pg_dump使用以下特定视图:
pg_dump -s -t myview -h host -U postgres --dbname=db > ./schema.sql
Run Code Online (Sandbox Code Playgroud)
然后schema.sql包含实际的视图定义。
那么,为什么会发生这种情况?谢谢你们!
我想收集数据库中运行次数最多的查询的统计信息。
为此,我需要知道如何跟踪查询,以便我可以创建视图或物化视图来缓存最高运行查询的结果,因为我有一个大数据库。
您如何最好地总结交错行之间同一列中一系列日期的差异?我有一个日期时间列,想计算行之间的差异。我想要秒的差异。这个问题不是关于如何获得 2 个时间戳之间的差异,而是更侧重于如何最有效地在同一个表的行之间进行计算。在我的情况下,每一行都有一个日期时间事件类型,它在逻辑上将两行链接在一起。
详细说明如何对开始和结束的事件类型进行分组。(Andriy M 的问题)开始和结束“应该”是连续的。如果开始没有后续结束,则应将其排除在总和之外。移动到下一个开始,看看它是否有结束。只有连续的开始 - 结束对应该添加到总秒数的总和中。
在 postgresql 9.x 中工作...
表中的示例数据;
eventtype, eventdate
START, 2015-01-01 14:00
END, 2015-01-01 14:25
START, 2015-01-01 14:30
END, 2015-01-01 14:43
START, 2015-01-01 14:45
END, 2015-01-01 14:49
START, 2015-01-01 14:52
END, 2015-01-01 14:55
Run Code Online (Sandbox Code Playgroud)
请注意,所有开始日期和结束日期都是连续的。
这是我的第一次尝试。似乎正在工作。
SELECT
-- starts.*
SUM(EXTRACT(EPOCH FROM (eventdate_next - eventdate))) AS duration_seconds
FROM
(
WITH x AS (
SELECT *, dense_rank() OVER (ORDER BY eventdate) AS rnk
FROM table
AND eventdate > '2015-01-01 00:00:00.00'
AND eventdate < '2016-01-01 23:59:59.59'
)
SELECT …Run Code Online (Sandbox Code Playgroud) 是否可以INSERT从SELECT语句DEFAULT中将值放入 PostgreSQL 表并使用空列的值?
就我而言,该SELECT语句是从 JSON 中选择的。
在下面的尝试中,我通过显式检索序列取得了成功,但我希望有一种方法可以使用 DEFAULT 值进行 INSERT。或者选择 DEFAULT 值而不必显式调用默认函数。
-- Example table
create table animals
(
id serial,
nm character varying (30) NOT NULL, --name
typ character varying(10),
tvi integer,
tvf numeric(8,3)
);
insert into animals VALUES (DEFAULT,'mouse','m',4,12.45);
select row_to_json(a) from animals a;
select * from json_populate_record(null::animals,'{"id":null,"nm":"mouse","typ":"m","tvi":4,"tvf":12.450}');
--All good.
-- Attempt #1
INSERT INTO animals
select id ,nm,typ,tvi,tvf from json_populate_record(null::animals,'{"id":null,"nm":"mouse","typ":"m","tvi":4,"tvf":12.450}');
/*
ERROR: null value in column "id" violates not-null …Run Code Online (Sandbox Code Playgroud) 我在 PostgreSQL 中有一个包含一些数据的表:
create table t2 (
key jsonb,
value jsonb
);
INSERT INTO t2(key, value)
VALUES
('1', '"test 1"')
,('2', '"test 2"')
,('3', '"test 3"')
,('[]', '"test 4"')
,('[1]', '"test 5"')
,('[2]', '"test 6"')
,('[3]', '"test 7"')
,('[1, 2]', '"test 8"')
,('[1, 2, 3]', '"test 9"')
,('[1, 3]', '"test 10"')
,('[1,2,4]', '"test 11"')
,('[1, 2,4]', '"test 12"')
,('[1,3,13]', '"test 13"')
,('[1, 2, 15]', '"test 15"');
Run Code Online (Sandbox Code Playgroud)
我尝试像这样对这些行进行排序:
SELECT key FROM t2 order by key;
Run Code Online (Sandbox Code Playgroud)
结果是:
[]
1
2
3
[1] …Run Code Online (Sandbox Code Playgroud) 我正在尝试优化我的 Postgres 9.2 数据库以加快具有日期限制的查询。
我有一个timestamp专栏,但主要是我要求某一天,所以我创建了一个timestamp用于date解析的索引:
CREATE INDEX foo_my_timestamp_idx
ON foo
USING btree
((my_timestamp::date) DESC);
Run Code Online (Sandbox Code Playgroud)
现在,为了提高性能,我CLUSTER foo使用上面的索引表:
CLUSTER foo USING foo_my_timestamp_idx;
Run Code Online (Sandbox Code Playgroud)
根据手册上SQL-CLUSTER,表
根据索引信息进行物理重新排序
我想知道是否会对使用表 PK 的其他查询的性能产生影响(比如说id_foo)。有什么缺点吗?
postgresql performance storage index-tuning postgresql-9.2 postgresql-performance
几天前,我将 RDS 实例 (db.t2.medium) 从 Postgres 9.5 升级到 9.6。升级后,CPU 使用率一直几乎是 100%。这导致我的申请失败。假设问题出在9.6版本上,我又升级到10.6。它变得更好,但仍然比原始 9.5 版本的 CPU 使用率高得多。
我在升级过程中没有更改应用程序代码。如何检查 CPU 使用率增加的原因并可能修复它?
postgresql ×10
json ×2
amazon-rds ×1
array ×1
compression ×1
connectivity ×1
cpu ×1
datetime ×1
index ×1
index-tuning ×1
insert ×1
money ×1
order-by ×1
performance ×1
pg-dump ×1
pgadmin ×1
storage ×1
sum ×1
view ×1