[英]PostgreSQL: unique constraint or unique index
如果列包含唯一约束并且我想通过此列快速搜索,我应该创建唯一索引吗?
例如,我有一个列login
users
应该是唯一的。 我需要login
列的快速搜索用户。
这是最好的方法:
WHERE login = 'something'
选择查询吗?) 第二种情况是未锁定用户的唯一login
(列locked = false
)。 Postgres不支持部分条件。 我应该创建一个唯一的条件和部分索引,还是仅仅是一个部分索引?
还有一个问题:我应该为具有外键的列创建新索引吗? 例如: users.employee_id
与employees.id
,我应该在employee
列上创建索引以优化查询SELECT * FROM users WHERE employee_id = ....
? 何时是优化引擎使用的内部索引,何时不是?
我有一个表'users',列登录应该是唯一的
如果是这种情况,则需要一个唯一约束。 唯一索引强制执行唯一约束(在幕后)。
概念:
是否在WHERE login ='something'的选择查询中使用?
是的。
第二种情况是未锁定用户的唯一登录(列锁定= false)。
如果是这种情况,则unique
约束将不起作用。 也许插入触发器可以帮助到这里。
我应该为具有外键的列创建新索引吗?
不,它不需要(至少在当前的版本10
,也许是更高版本),s。 文件 :
当为表定义唯一约束或主键时,PostgreSQL会自动创建唯一索引。 [...]无需在唯一列上手动创建索引; 这样做只会复制自动创建的索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.