3

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

$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);
    }
}
4

3 回答 3

6

加入表,这样你就只会查询一次数据库,例如

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

要进一步了解有关加入的更多信息,请参阅下面的链接

于 2013-01-02T07:33:53.293 回答
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 
于 2013-01-02T08:55:47.677 回答
-1

你也可以做这样的事情..

Select * from articles JOIN articles_meta_data ON ID = article_ID 

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

于 2013-01-02T08:09:08.200 回答