我有一张标准表
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 |总是] TRIGGER这些表格配置 触发属于该表的触发器。禁用的触发器是 仍然为系统所知,但在触发时不会执行 事件发生。对于延迟触发器,将检查启用状态 当事件发生时,而不是实际触发功能 执行。可以禁用或启用指定的单个触发器 表上的名称或所有触发器,或仅用户触发器(此选项 排除内部生成的约束触发器,例如那些 用于实现外键约束或可延迟唯一性 和排除约束)。禁用或启用内部生成的 约束触发器需要超级用户权限;应该这样做 当然,因为约束的完整性是不可能的 如果未执行触发器,则保证。触发器开火 机制也受配置变量的影响 session_replication_role。简单启用的触发器将在触发时触发 复制角色是“origin”(默认)或“local”。触发器 配置为ENABLE REPLICA只会在会话进入时触发 “副本”模式和配置为ENABLE ALWAYS的触发器将触发 无论当前的复制模式如何。
答案 0 :(得分:1)
禁用触发器不会禁用索引(为什么会这样?)。
至于计划
SELECT "users".* FROM "users" WHERE "users"."id" = 1;
它可能会也可能不会使用基于很多因素的索引。主要是 - 表中的记录数。