【发布时间】:2019-02-15 09:30:07
【问题描述】:
我的数据库表有一个主键和多个整数列以及一个名为 paused 的布尔列,它不在主键中。该表只能容纳几百行,但我需要非常定期地查询布尔列。我需要知道布尔暂停列中的任何一行是否为真,如果有一行为真,我将返回真,如果全部为假,我将返回假。
我应该在布尔列上创建一个索引吗?该语法是什么样的,或者是否有任何其他方法可以优化该查询?
CREATE TABLE IF NOT EXISTS pause_metrics (
consumer TEXT NOT NULL,
timstamp TIMESTAMP NOT NULL,
idle_counter INTEGER NOT NULL,
paused BOOLEAN DEFAULT FALSE NOT NULL,
PRIMARY KEY(consumer)
);
【问题讨论】:
-
请edit您的问题并为有问题的表(包括现有索引)和您要优化的查询添加
create table语句。 formatted text 请no screen shots -
对于“只有几百行”,可能永远不会使用索引开始 - 特别是如果真/假值具有均匀分布。如果有很多行带有其中一个值(例如,它们中的大多数都有
paused = false),那么过滤索引可能是有意义的,例如create index on the_table (some_column) where not paused -
我添加了 CREATE TABLE 语句。我真的对调用这样的查询的最快方式很感兴趣。 SELECT paused from purge_consumer_metrics where paused = true limit 1;
标签: postgresql