1

哪个更快?

  1. 我将 SQL 结果存储在一个数组中——这意味着 1000 个或更多 ID。然后我使用 in_array() 函数 30 次找出 MyID 在数据库中。

  2. 我检查 MyID 是否在数据库中并重复 30 次。

试验结果:

48 records (MyID)

Array count: 1704 (ID) (Table size: 100 000)

Delta time:

Method 1: 0.0075759887695312

Method 2: 0.0038831233978271
4

3 回答 3

1

我肯定会说一次将所有 ID 放入数组中会比查询 MySQL 服务器 30 次要快得多。

于 2013-03-23T16:54:35.877 回答
0

改用(键,值)关联数组(实际上所有数组在 PHP 中都是关联的,但这不是重点)。将数组的设置为 ID,每个值为(例如)1。

$ids = array();
For all ID from database {
   $ids[ ID ] = 1;
}

测试 ID 是否在数组中

if (isset($ids[ ID ])) {
   // yes it is 
}

以这种方式使用数组非常快,因为键在内部存储为树 -搜索复杂度约为 O(1)

于 2013-03-23T18:36:58.930 回答
0

您提出的解决方案似乎都不正确。您应该查看 MySQL 的IN 子句。有了这个,您可以WHERE在单个查询中获取多个值,如下所示:

SELECT something FROM table WHERE id IN(1, 4, 5, ...)
于 2013-03-23T17:13:29.407 回答