..


赞助商链接

与INSERT减查询... ON DUPLICATE KEY UPDATE

由Max博西写文章

而“众所周知,一个正确的查询管理是稳定和有效实施的前提。
在这篇文章中,我们将提出一个鲜为人知但非常强大的语法,我说的ON DUPLICATE KEY UPDATE子句。

该子句用于在INSERT语句,其目的是验证,插入前,有一个主键(主键)或唯一键(UNIQUE KEY)重复,如果发生这种情况的引擎un'UPDATE MySQL将代替插入。

该条款的优点是明确的:你写在性能和代码清理方面具有优势,而不是两个单查询。

让我们以一个例子。 假设我们要作一个简单的脚本,执行对我们网站的访客记录。 下面是我们的数据库表结构:

  • IP(键)
  • numero_visite
  • ultima_visita
想记录我们的网页上,我们每一个中转IP,按照通常的逻辑,做一个选择第一个初步的检查IP是不是在数据库中,只有如果答案已经为负(IP不存在)查询INSERT。

INSERT的语法感谢... ... ON DUPLICATE KEY UPDATE ... ...我们可以实现一个查询相同的结果:

 



 INSERT INTO ip_visitatori VALUES('123 .123.123.123',1,NOW())

 





 ON KEY DPLICATE







 UPDATE numero_visite numero_visite = + 1,ultima_visita = NOW();

 
因此,如果IP是包容而成,否则你运行一个简单的更新受影响的记录。 使用这个语法允许获得在性能等于30%计算的好处。

有了一点点的想象力和创造力的问题条款可以有不同的情况下非常有用。
例如,我们可以结合使用条件的。 下面是一个例子:假设你有一个假设性的在线拍卖网站的结构如下表:

  • ID_asta
  • migliore_offerta
假设你要进行一个新的报价配售,如果拍卖已提供将有一个简单的升级,但前提是提供比一个已经存在的更高:
 



信息INTO VALUES(1,120)INSERT

 





 ON KEY DPLICATE







 UPDATE migliore_offerta = IF(VALUES(migliore_offerta)<120,120,VALUES(migliore_offerta))

 
通过在一个简单的查询,我们一举解决了... ... 否则,我们将不得不使用随之而来的资源浪费(和错误更大的风险)几个查询。

在同一类...
电子学习
MS访问(高级) MS访问(高级)
了解如何创建和管理数据库迅速和容易。 起价29€。
MySQL的(课程) MySQL的(课程)
管理的开放源码数据库。 从39€。
SQL和数据库(课程) SQL和数据库(课程)
创建和管理关系数据库。 从39€。
赞助商链接