在MySQL中插入唯一行的最便宜的方法?

时间:2012-04-14 03:52:03

标签: mysql database

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

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

2 个答案:

答案 0 :(得分:2)

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

您的select方法不仅会失败,还会涉及到服务器的两次往返而不是一次。更不用说让服务器弄清楚它会给它提供更多的优化机会。

答案 1 :(得分:0)

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

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