代码之家  ›  专栏  ›  技术社区  ›  Devner

php&mysql:下面哪个查询更快?为什么?

  •  0
  • Devner  · 技术社区  · 14 年前
    1. 以下3个查询中哪一个更快?为什么?
    2. 我在我的应用程序中使用了很多其他连接的查询。那么,我有没有什么方法可以测试他们的速度呢?如果是,你能告诉我是什么吗?

    查询1:

    $q = "SELECT COUNT(books.id) FROM books 
    INNER JOIN books_type ON books.id = books_type.id
    WHERE books_type.book_type = 'Comedy'";
    

    查询2:

    $q = "SELECT COUNT(*) FROM books 
    INNER JOIN books_type ON books.id = books_type.id
    WHERE books_type.book_type = 'Comedy'";
    

    查询3:

    $q = "SELECT books.id FROM books 
    INNER JOIN books_type ON books.id = books_type.id
    WHERE books_type.book_type = 'Comedy'";
    
    $books_count = mysql_num_rows($q);
    

    谢谢您。

    2 回复  |  直到 14 年前
        1
  •  2
  •   mga    14 年前

    你可以试试 EXPLAIN query_here 找出答案。

    例如:

    EXPLAIN SELECT books.id FROM books 
    INNER JOIN books_type ON books.id = books_type.id
    WHERE books_type = 'Comedy'
    

    这将为您提供有关每个查询及其执行方式的一些信息。有关 EXPLAIN 声明:

    “当您在select语句前面加上关键字explain时,mysql将显示优化器提供的有关查询执行计划的信息。也就是说,mysql解释了它将如何处理select,包括有关如何连接表以及表的顺序的信息。”

    http://dev.mysql.com/doc/refman/5.0/en/using-explain.html

    我还推荐本教程来优化数据库日志中的MySQL查询:

    http://www.databasejournal.com/features/mysql/article.php/1382791/Optimizing-MySQL-Queries-and-Indexes.htm

        2
  •  1
  •   raveren    14 年前

    即使你自己可以很容易地测试它, here's 根据这篇文章,第二篇应该是最快的。