这样做是有必要的,update但每次我都这样写,据我了解,这并不好,而且这些更新可能会达到不同的数量。
那么我在下面写的所有内容如何写在一个请求中?
$sql = "UPDATE `categories` SET `name`='Категория 1' WHERE `cat`='1'";
$sql = "UPDATE `categories` SET `name`='Категория 2' WHERE `cat`='2'";
$sql = "UPDATE `categories` SET `name`='Категория 3' WHERE `cat`='3'";
$sql = "UPDATE `categories` SET `name`='Категория 4' WHERE `cat`='4'";
基本上这样的请求不会超过 6 个,但不知何故我不想在一个循环中执行它们,我怕它会加载站点:(
如果我们在谈论 MySql,那么您可以使用 INSERT + ON DUPLICATE KEY UPDATE
关键是如果一条记录已经按主键存在于表中,那么它将使用您在 ON DUPLICATE KEY UPDATE 构造之后描述的数据进行更新
资源
您不太了解负载是什么,因此您提出了问题。
我会尽量说明我的观点:
首先,我们需要确定负载一词的含义,这是处理时间(执行请求需要多长时间)或资源量(CPU负载等)。很明显,这两个参数是相互关联的,但相信我,它们并不直接相关,所以现在我们将它们分开。因为 您的请求是简单的更新,它们不会占用太多资源,因此我们对时间感兴趣。
您的请求处理时间总结为两部分:
1) PHP 脚本发送请求和接收响应所需的时间。(一)
2)MySQL服务器本身处理你的请求并产生响应所需的时间。(2)
举些例子:
您有一个包含多次迭代的循环,例如 10 次,它在正文中形成并发送一个简单的请求(例如,添加一条新记录)。总共有 10 个请求,这里花费大量时间在(1)上,即 发送和接收响应。但是,如果您通过 一次发送这 10 个请求
;,那么您将在这种情况下最大限度地减少时间。现在让我们看一下您所做的情况
INSERT + ON DUPLICATE KEY UPDATE(如上所述)并通过;. 一般来说,mysql 提供的工具可以让您查看查询的“成功程度”、它需要多少资源、它影响了多少列等。不要去找算命先生,但有些事情告诉我,第一个选项会花费更长的时间,因为它的设计如此确定。Sobsna 通过;您使用一个简单的更新将缩短(2)。全部的:
一般来说,我们可以这样说:
(1)是用户访问页面时从脚本进行的数据库访问次数。(越少越好)。
(2) - 这是查询优化,这已经是一门完整的科学,但在您的情况下,简单的更新将是一个不错的选择。
PS对于索引查询,MySQL 处理得非常好和合适,能够承受大量数据并足够快地处理它们,所以请注意这一点。
JOIN用,LIKE, 非索引查询观察到问题。好吧,如果您不想陷入循环,那么您就在这里