php& mySQL:以下哪个查询更快?为什么?

时间:2010-02-24 08:20:43

标签: php mysql

  1. 以下哪3个查询会更快?为什么?
  2. 我在我的应用程序中使用了很多其他联接的查询。那么有什么方法可以衡量他们的速度?如果是的话,你能提一下它们是什么吗?
  3. 查询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 个答案:

答案 0 :(得分:2)

您可以尝试EXPLAIN query_here查找。

例如:

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

这将为您提供有关每个查询及其执行方式的一些信息。有关EXPLAIN语句的MySQL手册中的更多信息:

“当您在SELECT语句之前使用关键字EXPLAIN时,MySQL会显示优化器中有关查询执行计划的信息。也就是说,MySQL解释了它将如何处理SELECT,包括有关表如何连接以及以何种顺序的信息“

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

我还推荐本教程在Database Journal中优化MySQL查询:

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

答案 1 :(得分:1)

即使你可以自己轻松地测试它,here's一篇文章说明了原因。根据它,第二个应该是最快的。