【发布时间】:2026-02-09 19:25:01
【问题描述】:
如果列包含唯一约束并且我想通过该列快速搜索,我应该创建唯一索引吗?
例如,我有一个表 users 与列 login 应该是唯一的。我需要通过login 列快速搜索用户。
最好的方法是:
- 创建一个唯一约束(它创建内部唯一索引 - 它是否用于
WHERE login = 'something'的选择查询?) - 创建唯一索引
- 创建唯一索引和唯一约束(索引与内部索引重复?)
第二种情况是唯一的 login 未锁定用户(列 locked = false)。 Postgres 不支持部分条件。我应该创建一个唯一条件和部分索引还是只创建一个部分索引就足够了?
还有一个问题:我应该为具有外键的列创建新索引吗?例如:users.employee_id 与employees.id 相关,我是否应该在employee 列上创建索引以优化查询SELECT * FROM users WHERE employee_id = ....?优化引擎什么时候使用内部索引,什么时候不使用?
【问题讨论】:
标签: sql postgresql foreign-keys unique-constraint unique-index