哪个更快:in_array或数据库查询?

时间:2013-03-23 16:52:21

标签: php mysql performance

哪个更快?

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

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

  3. 测试结果:

    48 records (MyID)
    
    Array count: 1704 (ID) (Table size: 100 000)
    
    Delta time:
    
    Method 1: 0.0075759887695312
    
    Method 2: 0.0038831233978271
    

3 个答案:

答案 0 :(得分:0)

我肯定会说,一次性获取阵列中的所有ID将比查询MySQL服务器30次快得多。

答案 1 :(得分:0)

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

SELECT something FROM table WHERE id IN(1, 4, 5, ...)

答案 2 :(得分:0)

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

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

测试ID是否在数组中

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

使用数组这种方式非常快,因为内部密钥存储为树 - the search complexity is ~ O(1)