我有一个表,其列在唯一索引下定义。在将数据插入表中时,我目前没有检查是否已经存在匹配的行,而是让MySQL处理它。
这是首选方法吗?我的意思是,我可以在插入之前添加一个SELECT来检查欺骗行,但从性能角度来看似乎会更昂贵,因为可能会有5-10%的插入会触发欺骗。
答案 0 :(得分:2)
是的,让MySQL搞清楚。它已经知道下一个可能的值是什么,并且会比你更快地选择它。
您的select
方法不仅会失败,还会涉及到服务器的两次往返而不是一次。更不用说让服务器弄清楚它会给它提供更多的优化机会。
答案 1 :(得分:0)
MySQL有一个非常有用的“ON DUPLICATE KEY”语法:
http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html