在數據查詢過程中,我們經常希望在更新行的同時又希望獲得該行的信息,要怎么做才能避免重復的查詢呢?很遺憾的是,mysql并不支持像PostgreSQL那樣的UPDATE RETURNING語法,這個語法可以幫咱們在更新的時候同時返回該行的信息,還好在MYSQL中你可以使用變量來解決這個問題.例如,我們的一個客戶希望能夠更高效地更新一條記錄的時間戳,同時希望當前記錄中存放的時間表戳是什么,簡單地,可以用下面的代碼實現;
UPDATE bhtable1 LASTUPDATED = NOW() WHERE ID=1; //更新時間
SELECT LASTUPDATED FROM bhtable1 where id=1; //讀取時間
使用變量,我們可以按以下方式重寫查詢;
UPDATE bhtable1 SET LASTUPDATED =NOW() WHERE ID=1 AND @now := NOW();
SELECT @now;
上面看起來仍然需要兩個查詢,需要兩次網絡來回,但是這里的第二個查詢無須訪問任何數據表,所以會快非常多.南昌網站制作公司<百恒網絡工程師提示大家,如果網絡延遲非常大,那么這個優化的意可能不大,不過對于這個客戶,這樣做的效果很好.
原創文章出自:百恒網絡 如轉載請注明出處!專業,專注于南昌建網站,為用戶提供高品質的網絡產品及優質服務是我們始終的追求.
十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!



