我有一个标准表是否禁用的触发也将禁用索引暂时
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
应的指数使用如果我检查解释?
根据文档,在我看来,当触发器被禁用时,主键索引也被禁用。
DISABLE/ENABLE [REPLICA |总是]触发这些表格配置触发属于表的触发器。禁用的触发器是系统仍然知道的 ,但在触发事件发生时不会执行。对于延迟触发,当事件发生时检查启用状态 ,而不是当触发功能实际上执行 时。可以禁用或启用由名称指定的单个触发器或表中的所有触发器,或者仅用户触发器(此选项 不包括内部生成的约束触发器,例如 用于实现外键约束或可延迟唯一性 和排除约束)。禁用或启用内部生成的约束触发器需要超级用户权限;应该谨慎地执行 ,因为如果未执行触发器,约束的完整性不能保证为 。触发器触发 机制也受配置变量 session_replication_role的影响。当复制角色为“原始”(默认)或“本地”时,只需启用触发器就会触发。将触发器 配置为ENABLE REPLICA将仅在会话处于 “副本”模式时触发,并且配置为ENABLE ALWAYS的触发器将触发 ,而不管当前的复制模式如何。
由于文档根本没有提及索引,为什么您认为它支持您的想法应该禁用索引? –
要确定的唯一方法就是测试它。我的猜测 - 禁用触发器不会禁用索引。 –
我测试了它,发现禁用触发器不会禁用索引,并解释仍然使用索引。 –