postgresql 如何在price等列上设置过滤索引?

vnjpjtjt  于 2023-06-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(182)

我不明白过滤索引的概念。
我看到一个这样的例子:

CREATE INDEX idx_customer_inactive
ON customer(active)
WHERE active = 0;

但也许我有一个产品表,我过滤的定价。
一个用户可能会输入一个而不是两个,所以我必须这样说:

CREATE INDEX idx_customer_inactive
ON customer(active)
WHERE price = Whatever

这可能吗?

tgabmvqs

tgabmvqs1#

CREATE INDEX idx_customer_inactive ON customer(active) WHERE active = 0;

这将在customer表active列上创建一个名为idx_customer_inactive的索引。WHERE子句指定索引应仅包括活动列值为0的行。以下查询可以从该索引中受益:

SELECT * FROM customer WHERE active = 0;

此查询将筛选customer表,使其仅包括活动列的值为0的行。因为idx_customer_inactive索引只包括这些行,所以数据库可以使用该索引快速查找相关行,并更快地返回查询结果。
关于这一点:

CREATE INDEX idx_customer_inactive -- this name should include "price"
ON customer(active)                -- on the customer table? referencing the active column?
WHERE price = Whatever             -- is there a price column in the customer table?

相关问题