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;
它可能使用基于许多因素的索引,也可能不使用。主要是-表中记录的数量。既然文档根本没有提到索引,为什么您认为它支持您应该禁用索引的想法?唯一确定的方法是测试它。我的猜测-禁用触发器不会禁用索引。我测试了它,发现禁用触发器不会禁用索引,并且解释仍然使用索引。既然文档根本没有提到索引,为什么你认为它支持你应该禁用索引的想法?唯一确定的方法是测试它。我的猜测-禁用触发器不会禁用索引。我测试了它,发现禁用触发器不会禁用索引,并且解释仍然使用索引。