【发布时间】:2014-12-11 15:01:26
【问题描述】:
如果我想在表中维护一个唯一字段,哪个更快
运行选择查询然后插入查询
或直接运行插入查询,但在表中具有唯一字段
【问题讨论】:
-
一个查询比两个查询运行得快,你不觉得吗?
-
试试看。我的猜测是单个查询会更快。此外,将其作为表定义是放置此类域信息的正确方法。
-
如果您的字段需要包含唯一值,那么您必须在其上添加
UNIQUE INDEX。否则它不会是唯一的太久。如果您在数据库中已经有了这个约束,那么再次从 PHP 实现它的意义何在。更不用说,由于并发访问,无论您使用哪种语言,您都无法从外部源强制执行唯一性。 -
PHP 将“SELECT”发送到 MySQL。有一个滞后。 MySQL 完成这项工作并返回结果。您使用 PHP 进行一些处理。你再查询。再次涉及一些少量的延迟。您指示 MySQL 插入。但此时可能存在具有该值的记录。现在 - 所有这一切都与一次插入、一次行程、一次错误检查相比。
-
@axiac +1 用于并发访问。 Check-then-insert 迟早会出错。