Questions tagged «postgresql»

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

2
如何从PostgreSQL获取当前的unix时间戳?
Unix时间戳是自1970年1月1日UTC午夜以来的秒数。 如何从PostgreSQL获取正确的Unix时间戳? 与currenttimestamp.com和timestamp.1e5b.de进行比较时,我没有从PostgreSQL获得预期的时间: 这将返回正确的时间戳: SELECT extract(epoch from now()); 虽然这不是: SELECT extract(epoch from now() at time zone 'utc'); 我住在时区UTC +02。从PostgreSQL获取当前unix时间戳的正确方法是什么? 这将返回正确的时间和时区: SELECT now(); now ------------------------------- 2011-05-18 10:34:10.820464+02 另一个比较: select now(), extract(epoch from now()), extract(epoch from now() at time zone 'utc'); now | date_part | date_part -------------------------------+------------------+------------------ 2011-05-18 10:38:16.439332+02 | 1305707896.43933 | …

3
复合索引对第一字段的查询是否也有用?
假设我有一个包含字段A和的表格B。我在A+ 上进行常规查询B,因此在上创建了一个复合索引(A,B)。A组合索引还会仅对查询进行完全优化吗? 此外,我在上创建了索引A,但Postgres仍然仅在上将复合索引用于查询A。如果前面的答案是肯定的,那么我认为这并不重要,但是如果单个A索引可用,为什么默认情况下为什么要选择复合索引呢?

6
存储过程是否可以防止SQL注入?
存储过程可以防止对PostgreSQL数据库进行SQL注入攻击吗?我进行了一些研究,发现即使仅使用存储过程,SQL Server,Oracle和MySQL也不会对SQL注入造成威胁。但是,PostgreSQL中不存在此问题。 PostgreSQL核心中的存储过程实现是否可以防止SQL注入攻击或其他?还是即使我们仅使用存储过程,PostgreSQL也容易受到SQL注入的影响吗?如果是这样,请给我看一个例子(例如书籍,网站,纸张等)。

4
测量PostgreSQL表行的大小
我有一个PostgreSQL表。select *是很慢的,select id而又好又快。我认为这可能是因为行的尺寸很大,并且运输需要一段时间,或者可能是其他一些因素。 我需要所有字段(或几乎所有字段),因此仅选择一个子集并不是快速解决方案。选择我想要的字段仍然很慢。 这是我的表架构减去名称: integer | not null default nextval('core_page_id_seq'::regclass) character varying(255) | not null character varying(64) | not null text | default '{}'::text character varying(255) | integer | not null default 0 text | default '{}'::text text | timestamp with time zone | integer | timestamp with time …


1
Postgres UPDATE…LIMIT 1
我有一个Postgres数据库,其中包含有关服务器群集的详细信息,例如服务器状态(“活动”,“备用”等)。活动服务器在任何时候都可能需要故障转移到备用服务器,而且我不在乎使用哪个备用服务器。 我希望数据库查询更改备用数据库(仅一个)的状态,并返回要使用的服务器IP。选择可以是任意的:由于服务器的状态随查询而变化,因此选择哪个备用数据库都无关紧要。 是否可以将查询限制为仅一次更新? 这是我到目前为止的内容: UPDATE server_info SET status = 'active' WHERE status = 'standby' [[LIMIT 1???]] RETURNING server_ip; Postgres不喜欢这样。我可以做些什么?

3
如何在PostgreSQL中为新列指定位置?
如果我有带有列的表: id | name | created_date 并想添加一列,我使用: alter table my_table add column email varchar(255) 然后将该列添加到该created_date列之后。 有什么办法可以指定新列的位置?例如,这样我可以在之后添加它name并得到一个像这样的表: id | name | email | created_date

5
PostgreSQL中的索引工作
关于PostgreSQL中索引的工作,我有几个问题。我有一个Friends具有以下索引的表: Friends ( user_id1 ,user_id2) user_id1并且user_id2是user表的外键 这些等效吗?如果没有,那为什么呢? Index(user_id1,user_id2) and Index(user_id2,user_id1) 如果我创建主键(user_id1,user_id2),它会自动为其创建索引并 如果第一个问题中的索引不相等,则在上述主键命令上创建哪个索引?

4
如何在没有密码提示的情况下使用psql?
我写了一个脚本来REINDEX索引数据库。这是其中之一: echo -e "\nreindex for unq_vbvdata_vehicle started at: `date "+%F %T"`" >> ${LOG_FILE} psql -U ${USERNAME} -h ${HOSTNAME} -d ${DBNAME} -c "REINDEX INDEX scm_main.unq_vbvdata_vehicle;" if [[ ${?} -eq 0 ]]; then echo "reindex for unq_vbvdata_vehicle finished at: `date "+%F %T"`" >> ${LOG_FILE} else echo "reindex for unq_vbvdata_vehicle failed" >> ${LOG_FILE} …
70 postgresql  index  psql 

5
如何将json数组转换为postgres数组?
我有一列data,其中包含一个json大致像这样的文档: { "name": "foo", "tags": ["foo", "bar"] } 我想将嵌套tags数组转换为串联字符串(foo, bar)。array_to_string()从理论上讲,这很容易实现。但是,此功能不适用于json数组。所以我想知道如何将该json数组转换为Postgres array?

2
一个大查询或多个小查询哪个更快?
我曾在不同的公司工作过,并且我注意到其中有些人更喜欢将视图与所有“亲戚”一起加入表格中。但是随后在应用程序上,我们只需要使用1列。 因此,仅进行简单选择,然后在系统代码上“联接”它们会更快吗? 该系统可以是php,java,asp,也可以是连接到数据库的任何语言。 所以问题是,从服务器端(php,java,asp,ruby,python ...)到数据库的运行速度更快,运行一个查询即可获得我们所需的一切,或者从服务器端运行到数据库并运行一个查询一次只能从一个表中获取列?


9
如何在PostgreSQL中使用currval()获取最后插入的ID?
我有一张桌子: CREATE TABLE names (id serial, name varchar(20)) 我想要该表中的“最后插入的ID”,而无需RETURNING id在插入时使用。似乎有一个功能CURRVAL(),但我不知道如何使用它。 我尝试过: SELECT CURRVAL() AS id FROM names_id_seq SELECT CURRVAL('names_id_seq') SELECT CURRVAL('names_id_seq'::regclass) 但它们都不起作用。如何使用currval()获取最后插入的ID?

3
使用UUID或GUID作为主键有什么缺点?
我想建立一个分布式系统。我需要将数据存储在数据库中,使用UUID或GUID作为某些表上的主键会很有帮助。由于UUID / GUID很大,而且几乎是随机的,因此我认为这种设计有缺点。替代方法是使用自动递增的INT或LONG。 使用UUID或GUID作为表的主键有什么缺点? 我可能将Derby / JavaDB(在客户端上)和PostgreSQL(在服务器上)用作DBMS。


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.