Postgresql 禁用触发器是否也会暂时禁用索引

Postgresql 禁用触发器是否也会暂时禁用索引,postgresql,Postgresql,我有一张标准的桌子 Column | Type | Modifiers --------+------------------------+---------------------------------------------------- id | integer | not null default nextval('users

我有一张标准的桌子

 Column |          Type          |                     Modifiers                      
--------+------------------------+----------------------------------------------------
 id     | integer                | not null default nextval('users_id_seq'::regclass)
 name   | character varying(255) | 
 email  | character varying(255) | 
 active | boolean                | 
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)
下一步如果我执行

ALTER TABLE "users" DISABLE TRIGGER ALL
SELECT "users".* FROM "users"  WHERE "users"."id" = 1
然后当我执行

ALTER TABLE "users" DISABLE TRIGGER ALL
SELECT "users".* FROM "users"  WHERE "users"."id" = 1
如果我选中“解释”,是否应该使用索引

根据doc,在我看来,当触发器被禁用时,主键索引也被禁用

禁用/启用[副本|始终]触发这些表单配置 触发属于表的触发器。禁用的触发器被禁用 系统仍然知道,但在触发时不执行 事件发生。对于延迟触发器,将检查启用状态 当事件发生时,而不是当触发器函数实际运行时 执行。可以禁用或启用由指定的单个触发器 名称,或表上的所有触发器,或仅用户触发器(此选项 排除内部生成的约束触发器,例如 用于实现外键约束或可延迟唯一性 和排除约束)。禁用或启用内部生成的 约束触发器需要超级用户权限;应该这样做 请谨慎,因为约束的完整性当然不能 如果触发器未执行,则保证。扳机射击 机制也受配置变量的影响 会话\复制\角色。简单启用的触发器将在 复制角色为“源”(默认)或“本地”。触发 配置为启用副本仅在会话处于启用状态时才会激发 “副本”模式和配置为启用的触发器将始终激发 无论当前的复制模式如何


禁用触发器不会禁用索引(为什么会?)

至于

SELECT "users".* FROM "users"  WHERE "users"."id" = 1;

它可能使用基于许多因素的索引,也可能不使用。主要是-表中的记录数。

禁用触发器不会禁用索引(为什么会?)

至于

SELECT "users".* FROM "users"  WHERE "users"."id" = 1;

它可能使用基于许多因素的索引,也可能不使用。主要是-表中记录的数量。

既然文档根本没有提到索引,为什么您认为它支持您应该禁用索引的想法?唯一确定的方法是测试它。我的猜测-禁用触发器不会禁用索引。我测试了它,发现禁用触发器不会禁用索引,并且解释仍然使用索引。既然文档根本没有提到索引,为什么你认为它支持你应该禁用索引的想法?唯一确定的方法是测试它。我的猜测-禁用触发器不会禁用索引。我测试了它,发现禁用触发器不会禁用索引,并且解释仍然使用索引。