gpt4 book ai didi

php - 如何正确测试查询性能

转载 作者:行者123 更新时间:2023-11-29 07:15:33 24 4
gpt4 key购买 nike

我有一个函数,它接受 ID 数组或单个 ID 作为参数。如果传递一个数组,它会在逗号上内爆以使 ID 查询友好。

此函数内有一个查询,用于更新传递的 ID 的记录。

查询如下:

"UPDATE tbl_name SET enabled = 1 WHERE ID IN (" . $IDs . ")";

现在,我想知道对数组使用上述查询是否存在性能问题,例如:

"UPDATE tbl_name SET enabled = 1 WHERE ID = " . $IDs;

如果只传递一个 ID。

我在 MySQL 查询浏览器中针对相同的 ID 测试了两个查询,两个查询的性能均为 0.02 秒 - 性能上的微小差异。

在查询浏览器中简单地测试两者是否是检查最佳查询性能的好方法?

只是我不想在没有必要的情况下在一个函数中使用两个查询来污染我的代码。

最佳答案

我会丢失第二个查询,只留下第一个查询,以使代码更具可读性和可维护性。

if (is_array($id)) $id = implode(',', $id);
$query = 'UPDATE table SET marked = 1 WHERE id IN ('.$id.')';

这样您将获得以下示例查询之一:

UPDATE table SET marked = 1 WHERE id IN (15);
UPDATE table SET marked = 1 WHERE id IN (21,12,15,16);

下面是 MySQL 手册中关于 operator IN 用法的描述:

If all values are constants, they are evaluated according to the type of expr and sorted. The search for the item then is done using a binary search. This means IN is very quick if the IN value list consists entirely of constants.

我还建议“不要修复未损坏的东西”,最好注意编写干净、可读和可维护的代码,因为你的时间比服务器的时间更有值(value),尤其是在毫秒或较少的。首先查看应用程序的性能,如果没问题,那么您就完成了 - 继续您可以花时间做的其他事情。如果它很慢 - 测量它(简单的时间测量就可以)以查明什么慢,然后只优化它。通常缓慢的是从大量具有大量连接的表中进行一些大而困惑的选择,而不是像这样的简单更新。另请记住,更新(通常)很少见,用户可以等待它们,因此请专注于优化选择。

关于php - 如何正确测试查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1470604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com