在数据查询过程中,我们经常希望在更新行的同时又希望获得该行的信息,要怎么做才能避免重复的查询呢?很遗憾的是,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;
上面看起来仍然需要两个查询,需要两次网络来回,但是这里的第二个查询无须访问任何数据表,所以会快非常多.南昌网站制作公司<百恒网络工程师提示大家,如果网络延迟非常大,那么这个优化的意可能不大,不过对于这个客户,这样做的效果很好.
原创文章出自:百恒网络 如转载请注明出处!专业,专注于南昌建网站,为用户提供高品质的网络产品及优质服务是我们始终的追求.