2012-05-24 20 views

回答

3

我認爲差別可以忽略不計,如果你不強制MySQL的字符串轉換爲整數。如果類型是整數,不加引號包住值:

UPDATE `table_name` SET `column` = 455 WHERE `row_id` = 433200; 

而且

UPDATE `table_name` SET `column` = `column` + 1 WHERE `row_id` = 433200; 

然而,查詢說兩回事。第一個顯式設置值的地方不是線程安全的。如果您有兩個或兩個以上的會話,都嘗試增加值,無論上一次跑哪一個都會設置該值,而其他值可能會丟失。例如,如果三個連接同時運行查詢,則該值可能只會增加一次。爲避免這種情況,您必須在SELECT之前顯式鎖定表,並在UPDATE之後釋放它。

第二個查詢,您增加值的位置是線程安全的。如果三個連接全部同時運行查詢,則該值將遞增三次。

1

我建議row_idcolumn不是一個字符串,但整數。如果是這樣,你爲什麼要求mysql爲你轉換類型。

首先查詢速度更快,我認爲

在第二你有2個額外的操作 - 獲取價值,除了