Questions tagged «postgresql»

PostgreSQL的所有版本。如果该上下文很重要,请添加其他特定于版本的标记,例如postgresql-11。


2
如何仅以毫秒为单位从PostgreSQL获取时间戳列?
我timestamp without time zone default now()在PostgreSQL数据库中有一列“创建”的类型。 如果我选择“ colums”,则默认情况下它的格式很好看: SELECT created FROM mytable; created --------------------------- 2011-05-17 10:40:28.876944 但是我只想以毫秒为单位获取时间戳(以Long为单位)。像这样: 从mytable中选择myformat(创建); created ----------------- 2432432343876944 我怎样才能在几毫秒内从PostgreSQL获取时间戳列? 对杰克的回应: 我确实得到了与您(-3600)相同的区别,但是如果我使用的话,timestamp with time zone我会看到“错误”或区别是因为'1970-01-01'获得了时区+01。 create table my_table_2(created timestamp with time zone); CREATE TABLE insert into my_table_2 (created) values (now()), ('1970-01-01'); INSERT 0 2 select created, extract(epoch from …

4
空间索引可以帮助“范围-限制范围”查询吗
问这个问题,特别是对Postgres,因为它对R树/空间索引有很好的支持。 下表具有单词及其频率的树结构(嵌套集模型): lexikon ------- _id integer PRIMARY KEY word text frequency integer lset integer UNIQUE KEY rset integer UNIQUE KEY 和查询: SELECT word FROM lexikon WHERE lset BETWEEN @Low AND @High ORDER BY frequency DESC LIMIT @N 我认为覆盖索引(lset, frequency, word)会很有用,但如果范围内的lset值过多,我可能会认为效果不佳(@High, @Low)。 (frequency DESC)当使用该索引的搜索提早产生@N与范围条件匹配的行时,使用简单的索引有时也足够了。 但是,性能似乎在很大程度上取决于参数值。 有没有一种方法可以使它快速执行,而不管该范围(@Low, @High)是宽还是窄,以及无论哪个高频字都幸运地处于选定的(狭窄)范围内? R树/空间索引会有所帮助吗? 添加索引,重写查询,重新设计表,没有任何限制。

2
强制PostgreSQL客户端使用SSL?
我已经配置ssl = on了postgresql.conf(并安装了证书等)。这样是否可以确保所有客户端始终通过SSL连接? (就是说,ssl = on如果没有 SSL加密,是否无法连接?) 还有其他方法可以确保所有客户端始终通过SSL / TLS连接吗? 亲切的问候,KajMagnus
29 postgresql 

1
带有索引的JSONB与hstore
在此阶段,我试图以尽可能少的假设(关于Web应用程序实际如何演变)来决定数据库设计。 第一步,了解JOINS昂贵,因此我考虑使用少量的整体表,而不是大量的规范化较小表。第二点,我对使用hstore与常规表与JSONB(具有GiST索引)之间感到困惑。 AFAIK(请随时纠正): 通常,在Postgres中,已知hstore的性能要优于其他数据类型。FOSDEM PGDAY的演示文稿有一些有趣的统计数据(在幻灯片的下半部分)。 https://wiki.postgresql.org/images/b/b4/Pg-as-nosql-pgday-fosdem-2013.pdf hstore的一个优点是快速索引(GiN或GiST)。但是,使用JSONB,GiN和GiST索引也可以应用于JSON数据。 来自第二象限专家的博客说:“这时可能值得在所有新应用程序中用jsonb替换hstore使用”(滚动到最后):http ://blog.2ndquadrant.com/postgresql-anti-patterns-unnecessary -jsonhstore-dynamic-columns / 因此,我想决定以下几点: 对于数据的主要(结构化)部分:它应该放在几个关系表中(相对较大,有很多列),还是应该是使用hstore的许多键值存储? 对于临时(用户提供的/非结构化的)数据,应该将其存储在JSON中还是将其存储在hstore中(存储在主要关系表之一中)?

2
如何处理由于范围类型完全相等而导致的错误查询计划?
我正在执行更新,其中我需要对tstzrange变量进行完全相等的处理。约100万行被修改,查询耗时约13分钟。的结果EXPLAIN ANALYZE可以在此处看到,实际结果与查询计划者估算的结果有很大不同。问题在于索引扫描开启t_range期望返回一行。 这似乎与以下事实有关:范围类型的统计信息与其他类型的统计信息存储方式不同。综观pg_stats为列图,n_distinct是-1和其它字段(例如most_common_vals,most_common_freqs)是空的。 但是,必须在t_range某处存储统计信息。一个非常相似的更新,其中我在t_range上使用“内”而不是完全相等,需要大约4分钟的时间来执行,并且使用完全不同的查询计划(请参阅此处)。第二个查询计划对我来说很有意义,因为将使用临时表中的每一行以及历史记录表的大部分。更重要的是,查询计划人员为上的过滤器预测了大约正确的行数t_range。 的分布t_range有点不寻常。我正在使用此表存储另一个表的历史状态,并且对另一个表的更改会在大型转储中一次全部发生,因此没有许多不同的值t_range。以下是与的每个唯一值相对应的计数t_range: t_range | count -------------------------------------------------------------------+--------- ["2014-06-12 20:58:21.447478+00","2014-06-27 07:00:00+00") | 994676 ["2014-06-12 20:58:21.447478+00","2014-08-01 01:22:14.621887+00") | 36791 ["2014-06-27 07:00:00+00","2014-08-01 07:00:01+00") | 1000403 ["2014-06-27 07:00:00+00",infinity) | 36791 ["2014-08-01 07:00:01+00",infinity) | 999753 t_range以上不同的计数已经完成,因此基数约为3M(其中1M会受到任一更新查询的影响)。 为什么查询1的性能比查询2差得多?就我而言,查询2是一个很好的替代品,但是如果确实需要精确的范围相等性,我如何才能使Postgres使用更智能的查询计划? 带索引的表定义(删除不相关的列): Column | Type | Modifiers ---------------------+-----------+------------------------------------------------------------------------------ history_id | integer | not null default nextval('gtfs_stop_times_history_history_id_seq'::regclass) t_range …

4
检查两个表在PostgreSQL中是否具有相同的内容
已经在Stack Overflow上提出了此要求,但仅适用于MySQL。我正在使用PostgreSQL。不幸的是(令人惊讶的是)PostgreSQL似乎没有类似的东西CHECKSUM table。 PostgreSQL解决方案会很好,但通用解决方案会更好。我发现http://www.besttechtools.com/articles/article/sql-query-to-check-two-tables-have-identical-data,但是我不了解所使用的逻辑。 背景:我重新编写了一些数据库生成代码,因此需要检查新旧代码是否产生相同的结果。

1
将所有列记录转换为小写
我正在使用PostgreSQL 9.1,并且我的用户表带有一login列。 登录名区分大小写,例如Bob,MikE和john。我想将所有这些记录转换为小写。我怎样才能做到这一点?

2
选择SQL文本列时如何换行?
我从带有长文本列的表中选择。我想将长行换成最大行长。 从: SELECT * FROM test; test_id | text --------+----------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris lorem 至: test_id | text --------+----------------------------- 1 | Lorem ipsum dolor sit amet,+ | consectetur adipiscing elit+ | . Mauris lorem
28 postgresql 


2
阻止PostgreSQL在Ubuntu中启动
我使用的是PostgreSQL 9.2,启动系统(Kubuntu)时它将自动运行。 如何避免这种情况? 我需要手动启动它,并且我不希望它在无人值守的情况下启动,因为我需要查看控制台。



2
同一SELECT列表中的参考列别名
我正在将旧的基于MS-Access的系统转换为PostgreSQL。在Access中,由SELECT组成的字段可以用作后面字段的方程式的一部分,如下所示: SELECT samples.id, samples.wet_weight / samples.dry_weight - 1 AS percent_water, 100 * percent_water AS percent_water_100 FROM samples; 当我在PostgreSQL中执行此操作时,Postgres会引发错误: 错误:列“ percent_water”不存在。 通过从子选择中进行选择,这是解决该问题的方法: SELECT s1.id, s1.percent_water, 100 * s1.percent_water AS percent_water_100 FROM ( SELECT samples.id, samples.wet_weight / samples.dry_weight - 1 AS percent_water FROM samples ) s1; 有没有像在第一个代码块中那样的捷径可以绕开复杂的嵌套?我也可以说100 * (samples.wet_weight / samples.dry_weight - …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.