从速度快的两个表中选择数据

时间:2013-01-02 07:32:33

标签: php mysql sql join

我想要从中选择两个表。我有一个名为articles的表,它为我的内容管理系统存储了各种文章,我有另一个名为articles_meta_data的表,它存储了articles表的元数据。要获取文章的元数据,请使用article Id从articles_meta_data中进行选择。我的代码在这里完美运行。有没有办法可以优化代码并使其更快?

$result = mysql_query("SELECT * FROM articles");    
while ($row = mysql_fetch_object($result)) {
    $result2 = mysql_query("SELECT * FROM articles_meta_data WHERE article_ID=" . $row->ID);
    while ($row2 = mysql_fetch_object($result2)) {
        var_dump($row2);
    }
}

3 个答案:

答案 0 :(得分:6)

加入表格,这样您只需查询一次数据库,例如

SELECT  b.*
FROM    articles a
        INNER JOIN articles_meta_data b
            ON a.ID = b.article_ID

要进一步了解加入,请参阅下面的链接

答案 1 :(得分:0)

您应该使用联接查询,这样您就不需要触发两个查询,但首先您必须决定使用哪个联接进行此检查此链接http://www.firebirdfaq.org/faq93/

这里我们将使用JOIN,以便选择具有相同值的列为articles.ID和articles_meta_data.article_ID的记录

SELECT *,articles_meta_data.field1,articles_meta_data.field2 from articles JOIN articles_meta_data ON articles.ID = articles_meta_data.article_ID 

答案 2 :(得分:-1)

你也可以这样做..

Select * from articles JOIN articles_meta_data ON ID = article_ID 

希望这也可能以其他方式帮助你。