3

我有一个表,其中包含在唯一索引下定义的列。在向表中插入数据时,我目前不检查是否已经存在匹配的行,而是让 MySQL 处理它。

这是首选方法吗?我的意思是,我可以在插入之前添加一个 SELECT 来检查重复行,但从性能角度来看,这似乎会更昂贵,因为可能有 5-10% 的插入会触发重复。

4

2 回答 2

2

是的,让 MySQL 自己弄清楚。它已经知道下一个可能的值是什么,并且会比你更快地选择它。

您的方法不仅可能select失败,而且还涉及到服务器的两次往返而不是一次。更不用说让服务器自己解决它会给它更多优化的机会。

于 2012-04-14T03:53:37.047 回答
0

MySQL 有一个非常有用的“ON DUPLICATE KEY”语法:

http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

于 2012-04-14T04:04:44.950 回答