如何从一组选项中返回多个结果?

时间:2011-08-02 10:02:11

标签: php mysql

我有一系列数据:

$ary = new array(
    array("domain"=>"domain1", "username"=>"username1"),
    array("domain"=>"domain1", "username"=>"username2"),
    array("domain"=>"domain2", "username"=>"username3"),
);

我需要使用此数据从具有以下表结构的MySql数据库中检索数据(为了说明而简化)。

domain_table
    domain_id
    domain

user_table
    user_id
    user

stuff_table
    stuff_id
    ... details

link_table
    link_id
    user_id   -- The user we are searching for connections on
    connected_user_id   -- from the array above
    stuff_id

我需要在stuff表中获取一个user_id的每一行,该user_id也有一个来自数组的connected_user_id。

我正在使用PDO

$ ary中可能有数百个(可能是数千个)条目。

我可以通过循环遍历数组并添加大量连接来生成一个非常大的查询。 我可以为$ ary中的每一行执行单个查询。 我可以使用$ ary创建一个临时表并使用连接。 还有别的吗?

最好的方法是什么 - 最快的处理器时间而不是过于神秘 - 实现这一目标?

2 个答案:

答案 0 :(得分:0)

  1. 为每一行执行单个查询 - 因为速度较慢而无法通行
  2. 许多人加入比1好。
  3. 如果可能的话 - 制作视图&用它。

答案 1 :(得分:0)

如果您的整个数据集都很大并且不适合内存,则不应该选择加入。

顺序选择。从link_table中选择行,从PHP中的结果中收集user_id。然后使用“where user_id in(?)”从user_table中选择行。处理PHP中的结果分组。

即使有大表,按键选择也会很快。有2-5选择而不是1选择不是问题。

当数据库适合RAM时,连接速度很快。然后出现问题。