标签: postgresql

PostgreSQL 9.2 在 tstzrange 中的天数?

如何找到一个范围内包含的天数?

例如,使用这些时间戳范围,获取这些(整数)天数:

tstzrange('2013-10-01 07:00', '2013-10-01 07:15') | 1 (day)
tstzrange('2013-10-01 07:00', '2013-10-01 23:45') | 1 (day)
tstzrange('2013-10-01 02:00', '2013-10-02 23:45') | 2 (days)
tstzrange('2013-10-01 07:00', '2013-10-03 01:00') | 2 (days)
tstzrange('2013-10-01 01:00', '2013-10-03 23:00') | 3 (days)
tstzrange('2013-10-01 23:00', '2013-10-04 01:00') | 4 (days)
Run Code Online (Sandbox Code Playgroud)

在我的挖掘中,我没有找到一个内置的函数。

是否有必要拉出lower()upper()时间戳元素,然后获取它们之间的日期间隔?

postgresql datatypes postgresql-9.2

3
推荐指数
1
解决办法
3024
查看次数

将记录变量中的值插入表中

我正在开发一个带有两个参数的用户定义函数:

create or replace function gesio(
    events_table_in regclass,  
    events_table_out regclass)
returns void as $$ ... $$
Run Code Online (Sandbox Code Playgroud)

events_table_inevents_table_out具有完全相同的架构。

简单解释一下,我遍历 的记录events_table_in,操作记录并希望以events_table_out以下方式追加(插入)操作的记录:

OPEN recCurs FOR execute 
format('SELECT * FROM %s order by session_id, event_time', event_table_in);

LOOP
    FETCH recCurs into rec;
    if not found then
      exit;
    end if;

    -- 1. do something with rec

    -- 2. insert the rec into events_table_out

end loop;
Run Code Online (Sandbox Code Playgroud)

我怎样才能保存recevents_table_out

postgresql insert plpgsql functions record

3
推荐指数
2
解决办法
2万
查看次数

内存中的 Postgresql 索引

我使用 Postgresql 9.2。我将表存储在 ramdisk 上,但现在这些关系的索引位于常规磁盘上。我也想将它们移到 ram 中,但据我所知,postgresql 会在可能的情况下将索引加载到内存中。我对吗?有什么方法可以告诉 postgres 不要将索引加载到内存中。

postgresql index

3
推荐指数
1
解决办法
4539
查看次数

如何有效地从 Postgres 查询以选择特殊词?

假设我有一个words包含非常多记录的表。
列是idname

words我的表格中,例如:

 'systematic', '????','gear','synthesis','mysterious', etc.  
Run Code Online (Sandbox Code Playgroud)

注意:我们也有 utf8 字样。
如何有效地查询,看看哪些词包含字母's''m''e'(所有的他们)?

输出将是:

systematic,mysterious
Run Code Online (Sandbox Code Playgroud)

我不知道如何做这样的事情。它应该是高效的,否则我们的服务器会受到影响。

postgresql select pattern-matching unaccent

3
推荐指数
1
解决办法
3178
查看次数

选择第 n 个百分位的行

我有两张桌子,table1table2。让这两个表包含日期、ID 和延迟列。

我有一个简单的查询,它对两个表执行连接并返回一组行:

Select table1.date,(table2.latency - table1.latency) as ans from table1, table2
where table1.id = table2.id order by ans;
Run Code Online (Sandbox Code Playgroud)

我需要从返回的行集中找到第 n 个百分位行,假设我需要从数据中找到 90%、99% 和 99.9% 的百分位行。

我需要以这样的形式显示数据:

    date       |   percentile  | ans
    01-12-1995 |    90         | 0.001563
    02-12-1999 |    99         | 0.0015
    05-12-2000 |    99.9       | 0.012
Run Code Online (Sandbox Code Playgroud)

这是我第一次接触 PostgreSQL。我很困惑我应该如何进行。

我正在看PERCENT_RANK()功能。请指导我正确的方向。

postgresql window-functions

3
推荐指数
1
解决办法
3438
查看次数

在 Postgres 中附加导入的数据

这是我通常用来将 csv 数据导入我的 postgres 数据库的方法。

\COPY master_list FROM '/root/raw/file.txt' DELIMITER ',' CSV;
Run Code Online (Sandbox Code Playgroud)

通常它是一个空白表,但在这种情况下,我需要将数据附加到一个包含现有数据的表中。

相同的命令是否足够,或者我应该进行更改,因为它是一个附加?

postgresql import

3
推荐指数
1
解决办法
5546
查看次数

Postgres CREATE DATABASE 已经有数据和表

当我做一个:DROP DATABASEmydb; 随后:CREATE DATABASE mydb WITH OWNER user;mydb数据库是使用我刚刚删除的数据库中的所有表和数据创建的。我缺少什么?

postgresql

3
推荐指数
1
解决办法
161
查看次数

如何使 PL/pgSQL 中的查询运行时与控制台查询运行时一样快?

基本上我想将查询结果分配给自定义类型属性。但是我注意到直接从 PostgreSQL 控制台查询大约需要 0.071 毫秒,并且在几次调用后函数内部为 0.400 毫秒和 0.170 毫秒。explain analyze甚至显示了第一种情况下索引的使用情况,但没有显示第二种情况。

这就是我正在做的。

CREATE OR REPLACE FUNCTION fun_isliked(
    par_client client.id%type,
    par_feed feed.id%type
)
RETURNS boolean
AS
$$
BEGIN
    RETURN (
        EXISTS(
            SELECT
                1
            FROM
                feedlike fl
            WHERE
                fl.client = par_client
                AND fl.feed = par_feed
                AND fl.state = 1
        )
    );
END;
$$ LANGUAGE plpgsql STABLE;
Run Code Online (Sandbox Code Playgroud)

以下是上述explain analyze两种情况的输出:

postgres=# explain analyze select exists (select 1 from feedlike where client = 13 and feed = 68 and state = 1); …
Run Code Online (Sandbox Code Playgroud)

postgresql performance plpgsql query-performance

3
推荐指数
1
解决办法
2276
查看次数

简单查询的执行速度非常慢

我尝试为我的数据创建报告,但在大表上真的很慢。

表结构为:

CREATE TABLE posts
(
  id serial NOT NULL,
  project_id integer,
  moderation character varying(255),
  keyword_id integer,
  author_id integer,
  created_at timestamp without time zone,
  updated_at timestamp without time zone,
  server_id character varying(255),
  social_creation_time integer,
  social_id character varying(255),
  network character varying(255),
  mood character varying(255) DEFAULT NULL::character varying,
  url text,
  source_id integer,
  location character varying(255),
  subject_id integer,
  conversation_id integer,
  CONSTRAINT posts_pkey PRIMARY KEY (id)
);

CREATE INDEX index_posts_on_author_id ON posts (author_id);
CREATE INDEX index_posts_on_keyword_id ON posts (keyword_id);
CREATE INDEX index_posts_on_project_id_and_network_and_social_id 
    ON posts …
Run Code Online (Sandbox Code Playgroud)

postgresql explain

3
推荐指数
2
解决办法
2万
查看次数

归一化或不归一化几个不同的值

假设在 Postgres 数据库中,您有一个名为 的表party,它可以有少于 5 个明确定义的,party_types例如“人”或“组织”。

您会将存储party_typeparty表中(例如party_type = 'Person')还是对其进行标准化(例如party.party_type = 1party_type(id, name) = (1, 'Person'))?
为什么?

postgresql normalization database-design dimensional-modeling

3
推荐指数
2
解决办法
1713
查看次数