我有一個表格,在唯一索引下定義了列。在將數據插入表中時,我目前沒有檢查是否存在匹配的行,而是讓MySQL處理它。在MySQL中插入唯一行的最便宜的方法是什麼?
這是首選的方法嗎?我的意思是,我可以在插入之前添加一個SELECT來檢查dupe行,但從性能角度來看,這似乎更加昂貴,因爲可能有5-10%的插入操作會觸發重複。
我有一個表格,在唯一索引下定義了列。在將數據插入表中時,我目前沒有檢查是否存在匹配的行,而是讓MySQL處理它。在MySQL中插入唯一行的最便宜的方法是什麼?
這是首選的方法嗎?我的意思是,我可以在插入之前添加一個SELECT來檢查dupe行,但從性能角度來看,這似乎更加昂貴,因爲可能有5-10%的插入操作會觸發重複。
是的,只是讓MySQL弄明白了。它已經知道下一個可能的價值是什麼,並會比你能更快地選擇它。
不僅你的select
方法失敗,它還涉及到服務器的兩次往返而不是一次。更不用說只是讓服務器弄清楚它給它提供了更多的優化機會。
MySQL有一個 「對重複KEY」 的語法,這是非常有用的:
http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html