内连接与 foreach 循环性能

use*_*012 2 php mysql foreach for-loop inner-join

我正在尝试做某事,并且我确定我是否以正确的方式做这件事。假设我在 MySQL 数据库中有两个表,其中包含以下列

-------------------------

Members
-------------------------
id        name      status
-----     -----     -----
1         Mike      0
2         Alex      0
3         John      1
4         Jack     -1
Run Code Online (Sandbox Code Playgroud)

-------------------------

    Status
    -------------------------
    id        text
    -----     -----
   -1        disapproved
    0         reviewing
    1         approved
Run Code Online (Sandbox Code Playgroud)

现在我需要通过以下方式显示“Members”表的信息:

id        name      status
-----     -----     -----
1         Mike      reviewing
2         Alex      reviewing
3         John      approved
4         Jack      disapproved
Run Code Online (Sandbox Code Playgroud)

一种方法是在两个表之间使用内部联接,另一种方法是从“成员”表中提取数据并将其放入 for-each 循环中并转换状态值。在后一种方式中,我根本不需要“状态”表。

我不确定哪种方式更好。如果您需要更多信息来帮助我,请告诉我。

提前致谢。

更新

我想要做的每个示例是这样的,假设我已经从“Memberes”表中提取了数据

foreach($data as $value)
    {
    if ($value['status'] == 0)
        $value['status'] = 'reviewing';
    if ($value['status'] == 1)
        $value['status'] = 'approved';      
    else
        $value['status'] = 'diapproved';        
    }
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 5

通常,您绝对希望通过 MySQL 数据库中的连接来执行此操作:

SELECT
    t1.id, t1.name, t2.text AS status
FROM Members t1
INNER JOIN Status t2
    ON t1.status = t2.id
Run Code Online (Sandbox Code Playgroud)

foreach出于多种原因,在 PHP 代码中使用循环处理此问题的替代方法并不吸引人。首先,您可能需要从两个表中引入所有信息,从内存和网络使用的角度来看,这都是浪费。然后,即使在您引入了数据之后,您仍将依赖 PHP 来执行连接。PHP 并不是真正为内部数据库操作而设计的,并且不能使用诸如索引之类的东西来加速该过程。