我是sql新手,已经开始学习postgres了。我想创建一个数据库,其中该数据库中表的一列 email . 现在,由于我将使用电子邮件来唯一地标识注册和登录的人,所以在创建表时使用unique命令,以便如果该电子邮件中已经存在帐户,我将传递一个错误。但这在大型数据库中是否有效?下面是我使用的sql命令的屏幕截图。
email
i7uaboj41#
你说的高效是什么意思?一 unique 约束或索引增加了开销以防止重复。这个开销是需要的 insert s或 update 在受影响的列上。多少开销?唯一性是通过使用索引来验证的。在大多数数据库中,在索引中查找值可能非常快,而且通常不会带来显著的性能问题。当然,这种开销有时可能很重要,特别是在非常繁忙的数据库中,有大量的数据更改(想想每秒几十或几百个事务)。一般来说,表的大小对性能的影响很小——好吧,假设有足够的内存,随着表变大,索引确实会慢一点(但很难注意到)。另一方面,不具有数据完整性的代价可能要大得多--影响在数据上运行的查询的性能和质量。
unique
insert
update
1条答案
按热度按时间i7uaboj41#
你说的高效是什么意思?一
unique
约束或索引增加了开销以防止重复。这个开销是需要的insert
s或update
在受影响的列上。多少开销?唯一性是通过使用索引来验证的。在大多数数据库中,在索引中查找值可能非常快,而且通常不会带来显著的性能问题。当然,这种开销有时可能很重要,特别是在非常繁忙的数据库中,有大量的数据更改(想想每秒几十或几百个事务)。
一般来说,表的大小对性能的影响很小——好吧,假设有足够的内存,随着表变大,索引确实会慢一点(但很难注意到)。
另一方面,不具有数据完整性的代价可能要大得多--影响在数据上运行的查询的性能和质量。