我有一个在唯一索引下定义了列的表。在向表中插入数据时,我当前不会检查匹配的行是否已经存在,而是让MySQL处理它。
这是首选的方法吗?我的意思是,我可以在insert之前添加一个SELECT来检查复制行,但从性能的角度看似乎会更昂贵,因为可能有5-10%的insert会触发一个复制。
发布于 2012-04-14 11:53:37
是的,就让MySQL自己解决吧。它已经知道下一个可能的值是什么,并且会比你更快地选择它。
您的select方法不仅会失败,还会涉及到服务器的两次往返,而不是一次。更不用说让服务器自己弄清楚了,这就给了它更多优化的机会。
发布于 2012-04-14 12:04:45
MySQL有一个非常有用的"ON DUPLICATE KEY“语法:
http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html
https://stackoverflow.com/questions/10150840
复制相似问题