2013-10-09 93 views
-1

我有一個mysql表列(運行),它包含一個整數,我想通過另一個動態值(1,2,3,4,5)使用更新查詢點擊一個按鈕。我應該怎麼做?動態增加mysql表列中的值

(如果沒有從該表列檢索原始值,有沒有增加價值的任何直接的方式,而不是像AUTO_INCREMENT因爲它使用的是靜態值一樣)

+0

要增加某些數值,您需要知道這兩個值。所以你必須訪問原始值。我不知道任何沒有訪問原始值的動態增量的功能。 –

+0

Digvijay是對的。如果你想更新,那麼不需要知道原始值。不清楚你到底想要達到什麼目的? –

+0

我想動態增加列值,而不訪問原始值, –

回答

1

我檢查的文件MySql上here這似乎可以用這樣一個更新查詢做到這一點:

UPDATE t1 SET col1 = col1 + 1; 

在那裏你可以只要COL1也是數值變更1對任何數值。 MySql將獲得col1的初始值並將其添加到它。

即使MySql可以做到這一點,我猜這也對速度有影響,它可能會比2個查詢更快,但可能需要測試來確定差異。

當遇到軟件速度問題時,只保存一個選擇查詢值,這不是您可以優化您的應用程序的關鍵修改。正如Digvijay Yadav建議的那樣,您還應該檢查其他解決方案和其他優化,以使您的應用程序更快。

該頁面還顯示,你的正在嘗試做的可以工作是另一個例子:

UPDATE t SET id = id + 1 ORDER BY id DESC; 

,請嘗試,讓我知道,如果它不工作。

+0

這個工作非常好,非常感謝,它爲我節省了大量的時間和精力。 –

0

如果數據庫交互是主要問題,那麼在這種情況下,我建議不要在每次用戶點擊時讀取/寫入數據庫。相反,您應該檢索一次值並將它們存儲在DS(可能是數組或列表)中。在每次點擊時,您都會在此列表上執行操作,並且在某個時間之後,您會使用更新的值更新數據庫另外,如果你正在創建和銷燬每個讀/寫操作的數據庫連接,那麼我不會建議這樣做。一個更好的解決方案IMO將在您的webapp啓動時創建數據庫連接,並將connection對象作爲attribute存儲在ServletContext中,就像使用servlet和JSP一樣。

此外,如果您的Web應用程序太大並且擁有數千個用戶,那麼可以使用多種緩存技術來提高數據庫的性能。