【问题标题】:Select data from two tables with speed从两个表中快速选择数据
【发布时间】:2012-12-16 14:29:16
【问题描述】:

我有两个要从中选择的表。我有一个名为articles 的表,它为我的内容管理系统存储各种文章,我还有一个名为articles_meta_data 的表,它存储文章表的元数据。为了获取文章的元数据,您可以使用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);
    }
}

【问题讨论】:

  • 使用 SQL JOIN,因此您无需为每篇文章迭代执行元选择。
  • @MarkBaker 怎么样?很抱歉,我在 MySQL 方面不太好
  • mysql-extension 已过时,不再维护,在 5.5 中将标记为 deprecated。请改用PDO_MYSQLMySQLiphp.net/en/mysql-connect

标签: php mysql sql join


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    你也可以这样做..

    Select * from articles JOIN articles_meta_data ON ID = article_ID 
    

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

    【讨论】:

      【解决方案3】:

      你应该使用连接查询,这样你就不需要触发两个查询,但首先你必须决定使用哪个连接检查这个链接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 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 2012-09-13
        • 1970-01-01
        • 2013-02-13
        • 1970-01-01
        • 1970-01-01
        • 2016-12-27
        相关资源
        最近更新 更多