假设我们有一张表:
CREATE TABLE public."Comments"
(
id integer NOT NULL DEFAULT nextval('"Comments_id_seq"'::regclass),
comment text COLLATE pg_catalog."default",
CONSTRAINT "Comments_pkey" PRIMARY KEY (id)
)
我们需要快速选择 comment IS NULL
或 comment IS NOT NULL
的行,但我们不需要全文搜索。
是否有可能以某种方式为此创建索引,但不创建全文索引?
最佳答案
只有当 WHERE
条件是选择性的,即它过滤掉很大一部分行时,索引才会对您有帮助。事实上,如果条件不是选择性的,PostgreSQL 会更喜欢更高效的顺序扫描。
因此,您无法拥有对这两种情况都有帮助的索引,但您可以拥有一个可能有助于解决这些情况中出现频率较低的情况的索引。
如果注释通常为 NULL,您可以使用:
CREATE INDEX ON "Comments" (id) WHERE comment IS NOT NULL;
关于sql - Postgres : Create index on that text is null or not,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46316661/