我需要从 PostgreSQL 数据库集群中删除一个数据库。即使有活动连接,我该怎么做?我需要一个-force标志,它将删除所有连接,然后删除数据库。
我该如何实施?
我dropdb目前正在使用,但其他工具也是可能的。
我在 Ubuntu 12.04 上使用 PostgreSQL 9.1。
我需要在一个时间范围内选择记录:我的表time_limits有两个timestamp字段和一个integer属性。我的实际表中还有其他列与此查询无关。
create table (
start_date_time timestamp,
end_date_time timestamp,
id_phi integer,
primary key(start_date_time, end_date_time,id_phi);
Run Code Online (Sandbox Code Playgroud)
该表包含大约 200 万条记录。
像下面这样的查询花费了大量的时间:
select * from time_limits as t
where t.id_phi=0
and t.start_date_time <= timestamp'2010-08-08 00:00:00'
and t.end_date_time >= timestamp'2010-08-08 00:05:00';
Run Code Online (Sandbox Code Playgroud)
所以我尝试添加另一个索引 - PK的倒数:
create index idx_inversed on time_limits(id_phi, start_date_time, end_date_time);
Run Code Online (Sandbox Code Playgroud)
我的印象是性能有所提高:访问表中间记录的时间似乎更合理:介于 40 到 90 秒之间。
但是对于时间范围中间的值,它仍然是几十秒。在针对表格末尾时(按时间顺序),还有两次。
我explain analyze第一次尝试得到这个查询计划:
Bitmap Heap Scan on time_limits (cost=4730.38..22465.32 rows=62682 width=36) (actual time=44.446..44.446 rows=0 loops=1)
Recheck …Run Code Online (Sandbox Code Playgroud) 我必须编写一个简单的查询,在其中查找以 B 或 D 开头的人名:
SELECT s.name
FROM spelers s
WHERE s.name LIKE 'B%' OR s.name LIKE 'D%'
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法重写它以提高性能。所以我可以避免or和/或like?
postgresql index regular-expression pattern-matching string-searching
假设我有一个包含字段A和的表B。我在A+上进行常规查询B,所以我在 上创建了一个复合索引(A,B)。A复合索引是否也会对查询进行全面优化?
此外,我在 上创建了一个索引A,但 Postgres 仍然只使用复合索引来查询A。如果前面的答案是肯定的,我想这并不重要,但是为什么它默认选择复合索引,如果单个A索引可用?
我有一个data类型的列,json其中包含这样的 JSON 文档:
{
"name": "foo",
"tags": ["foo", "bar"]
}
Run Code Online (Sandbox Code Playgroud)
我想将嵌套tags数组转换为连接字符串 ( 'foo, bar')。array_to_string()从理论上讲,使用该函数很容易做到这一点。但是,此功能不接受json输入。所以我想知道如何将这个 JSON 数组变成 Postgres 数组(类型text[])?
我想删除当前打开到特定 PostgreSQL 数据库的所有连接(会话),但不重新启动服务器或断开与其他数据库的连接。
我怎样才能做到这一点?
编辑Postgres 9.3
我正在处理具有以下架构的报告:http : //sqlfiddle.com/#!15/fd104/2
当前查询工作正常,如下所示:
基本上它是一个 3 表内连接。我没有做这个查询,而是离开它的开发人员,我想修改查询。如您所见,TotalApplication只计算基于a.agent_id. 您可以totalapplication在结果中看到该列。我想要的是删除它并将其更改totalapplication为新的两列。我想添加一个completedsurvey和partitalsurvey列。所以基本上这部分会变成
SELECT a.agent_id as agent_id, COUNT(a.id) as CompletedSurvey
FROM forms a WHERE a.created_at >= '2015-08-01' AND
a.created_at <= '2015-08-31' AND disposition = 'Completed Survey'
GROUP BY a.agent_id
Run Code Online (Sandbox Code Playgroud)
我刚刚添加AND disposition = 'Completed Survey'但我需要另一列partialsurvey具有相同的查询,completedsurvey唯一的区别是
AND disposition = 'Partial Survey'
Run Code Online (Sandbox Code Playgroud)
和
COUNT(a.id) as PartialSurvey
Run Code Online (Sandbox Code Playgroud)
但我不知道该把查询放在哪里,也不知道查询会是什么样子。所以最终输出有这些列
agent_id, name, completedsurvey, partialsurvey, loginhours, applicationperhour, rph
Run Code Online (Sandbox Code Playgroud)
一旦确定,然后 applicationperhour …
在 PostgreSQL 中,我使用now()andcurrent_timestamp函数,我看不出有什么区别:
# SELECT now(), current_timestamp;
now | now
--------------------------------+--------------------------------
04/20/2014 19:44:27.215557 EDT | 04/20/2014 19:44:27.215557 EDT
(1 row)
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我想将一个相当简单的、内部的、数据库驱动的应用程序从 SQLite3 迁移到 PostgreSQL 9.3,并在执行过程中收紧数据库中的权限。
该应用程序当前包含一个用于更新数据的命令;和一个查询它。当然,我还需要以其他方式维护数据库(创建新表、视图、触发器等)。
虽然此应用程序一开始将是唯一托管在服务器上的应用程序,但我更愿意假设它将来可能会托管在具有其他数据库的服务器上,而不是在以后有必要时进行争夺未来。
我认为这些将是一组相当常见的要求,但我很难找到一个简单的教程来解释如何在 PostgreSQL 中设置一个新数据库,并使用这种用户/权限分离。参考资料详细介绍了组、用户、角色、数据库、模式和域;但我觉得他们很困惑。
这是我到目前为止尝试过的(从内部psql作为“postgres”):
CREATE DATABASE hostdb;
REVOKE ALL ON DATABASE hostdb FROM public;
\connect hostdb
CREATE SCHEMA hostdb;
CREATE USER hostdb_admin WITH PASSWORD 'youwish';
CREATE USER hostdb_mgr WITH PASSWORD 'youwish2';
CREATE USER hostdb_usr WITH PASSWORD 'youwish3';
GRANT ALL PRIVILEGES ON DATABASE hostdb TO hostdb_admin;
GRANT CONNECT ON DATABASE hostdb TO hostdb_mgr, hostdb_usr;
ALTER DEFAULT PRIVILEGES IN SCHEMA hostdb GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO hostdb_mgr;
ALTER DEFAULT PRIVILEGES …Run Code Online (Sandbox Code Playgroud) 根据PostgreSQL 的文档,VARCHAR,VARCHAR(n)和之间没有性能差异TEXT。
我应该为名称或地址列添加任意长度限制吗?
编辑:不是欺骗:
我知道这种CHAR类型是过去的遗物,我不仅对性能感兴趣,而且对其他优缺点感兴趣,例如 Erwin 在他惊人的回答中所述。
postgresql ×10
index ×3
performance ×2
array ×1
connections ×1
count ×1
datatypes ×1
explain ×1
index-tuning ×1
join ×1
json ×1
maintenance ×1
optimization ×1
permissions ×1
session ×1
timestamp ×1
varchar ×1