在 Timescaledb 上建立索引
Indexing on Timescaledb
我正在测试一些关于 Postgresql 扩展 Timescaledb 的查询。
table 被称为 timestampdb,我 运行 一些查询看起来像这样
select id13 from timestampdb where timestamp1 >='2010-01-01 00:05:00' and timestamp1<='2011-01-01 00:05:00',
select avg(id13)::numeric(10,2) from timestasmpdb where timestamp1>='2015-01-01 00:05:00' and timestamp1<='2015-01-01 10:30:00'
当我创建 hypertable 时,我会这样做。
create hyper_table('timestampdb','timestamp1')
问题是现在我想在 id13 上创建一个索引。
我应该尝试这样的事情吗?:
create hyper_table('timestampdb','timestamp1') ,import data of the table and then create index on timestampdb(id13)
或类似这样的内容:
create table timestampdb,then create hypertable('timestampdb',timestamp1') ,import the data and then CREATE INDEX ON timestampdb (timestamp1,id13)
正确的做法是什么?
您可以创建没有时间维度列的索引,因为您不需要它是唯一的。如果索引包含 UNIQUE
或 PRIMARY KEY
,则需要将时间维度列包含到索引中,因为 TimescaleDB 将超表分区为时间维度列上的块,即问题中的 timestamp1
。如果分区键除了时间之外还包括 space 个维度列,则它们也需要包括在内。
因此,在您的情况下,迁移到超表后,以下内容就足够了:
create index on timestampdb(id13);
该问题包含两个查询,其中 none 个需要在 id13
上建立索引。如果您期望查询与问题中的查询不同,那么在 id13
上创建索引将很有价值,它将包含条件或在 id13
列上加入。
我正在测试一些关于 Postgresql 扩展 Timescaledb 的查询。 table 被称为 timestampdb,我 运行 一些查询看起来像这样
select id13 from timestampdb where timestamp1 >='2010-01-01 00:05:00' and timestamp1<='2011-01-01 00:05:00',
select avg(id13)::numeric(10,2) from timestasmpdb where timestamp1>='2015-01-01 00:05:00' and timestamp1<='2015-01-01 10:30:00'
当我创建 hypertable 时,我会这样做。
create hyper_table('timestampdb','timestamp1')
问题是现在我想在 id13 上创建一个索引。
我应该尝试这样的事情吗?:
create hyper_table('timestampdb','timestamp1') ,import data of the table and then create index on timestampdb(id13)
或类似这样的内容:
create table timestampdb,then create hypertable('timestampdb',timestamp1') ,import the data and then CREATE INDEX ON timestampdb (timestamp1,id13)
正确的做法是什么?
您可以创建没有时间维度列的索引,因为您不需要它是唯一的。如果索引包含 UNIQUE
或 PRIMARY KEY
,则需要将时间维度列包含到索引中,因为 TimescaleDB 将超表分区为时间维度列上的块,即问题中的 timestamp1
。如果分区键除了时间之外还包括 space 个维度列,则它们也需要包括在内。
因此,在您的情况下,迁移到超表后,以下内容就足够了:
create index on timestampdb(id13);
该问题包含两个查询,其中 none 个需要在 id13
上建立索引。如果您期望查询与问题中的查询不同,那么在 id13
上创建索引将很有价值,它将包含条件或在 id13
列上加入。