内部联接或foreach从数据库获取最终数据?

时间:2015-07-02 19:35:25

标签: php mysql

哪种查询使用正确?我需要获取这些数据的数组。我在谈论PHP的基准和标准。

$sql = "SELECT * FROM users AS u INNER JOIN users_groups AS ug ON (u.id = ug.user_id)";
$array = $sql->fetchAll();

$sql = "SELECT * FROM users";
foreach($sql as $value) {
    $array[] = $users_group = "SELECT * FROM users_groups WHERE user_id = $value[id]";
}
return $array;

2 个答案:

答案 0 :(得分:0)

从性能角度来看,第一个查询要好得多,因为第二个查询可能会导致n + 1个查询,其中n是用户数。通常,最好避免往返服务器。

答案 1 :(得分:0)

在性能方面,我总是使用你的第一个查询,因为在查询本身中应用所有条件获取所需数据总是更好,而不是在PHP中使用循环多次点击mysql服务器也会导致延迟在表现

您可以使用microtime()

检查性能和执行时间

例如: -

$start_time = microtime(true);

// your code

$end_time = microtime(true);

$exe_time = $end_time-start_time;

echo "execution time: ".$exe_time;