关于对性能影响的理论问题。
我表中的一个字段是唯一的。例如,Users 表中的 email_address。
什么对性能影响较小?尝试添加现有的电子邮件地址并收到错误,或者在电子邮件字段中进行搜索?
UNIQUE 字段可能会更快。
如果您告诉 MySQL 某个字段是唯一的,它可能会执行一些优化。
此外,如果您想要插入不在表中的记录,您可能会遇到一些并发问题。假设有两个人试图用同一个电子邮件地址注册。现在,如果你执行唯一性检查自己,像这样:
bool exists = userAlreadyExists(email);
if (exists)
showWarning();
else
insertUser(email);
可能会发生如下情况:
User 1 executes userAlreadyExists("foo@example.com") // returns false
User 2 executes userAlreadyExists("foo@example.com") // returns false
User 1 executes insertUser("foo@example.com")
User 2 executes insertUser("foo@example.com") // which is now a duplicate
如果让MySQL进行唯一性检查,以上情况就不会发生。
我是一名优秀的程序员,十分优秀!