Php mySQL选择和计数速度查询

Php mySQL选择和计数速度查询,php,mysql,performance,pdo,Php,Mysql,Performance,Pdo,我使用的是PDO,我需要知道SELECT语句返回了多少行。我的问题是,以下是比在两个查询中执行更慢、相同还是更快?PHPMyAdmin将告诉我仅SELECT语句需要多长时间,而不仅仅是COUNT语句,因此我很难告诉查询需要多长时间 有关查询: SELECT *, (SELECT COUNT(*) from table) AS count FROM table 比将其拆分为两个查询更快、相同还是更慢 谢谢。两个查询会更快。您拥有的是一个依赖子查询,它将为父级中的每个记录运行。如果是MyISAM表

我使用的是PDO,我需要知道SELECT语句返回了多少行。我的问题是,以下是比在两个查询中执行更慢、相同还是更快?PHPMyAdmin将告诉我仅SELECT语句需要多长时间,而不仅仅是COUNT语句,因此我很难告诉查询需要多长时间

有关查询:

SELECT *, (SELECT COUNT(*) from table) AS count FROM table

比将其拆分为两个查询更快、相同还是更慢


谢谢。

两个查询会更快。您拥有的是一个依赖子查询,它将为父级中的每个记录运行。如果是MyISAM表,子查询将非常快,您可能不会注意到它有少量记录


对它做一个解释,看看MySQL报告了什么。

两个查询会更快。您拥有的是一个依赖子查询,它将为父级中的每个记录运行。如果是MyISAM表,子查询将非常快,您可能不会注意到它有少量记录


对其进行解释,然后查看MySQL报告的内容。

您可以将此查询编写为:

SELECT t.*, const.totalcount
FROM table t cross join
     (select count(*) as totalcount from table) const;

这可能比运行两个查询快,也可能不快。两个查询涉及查询运行开销——编译查询、来回传输数据。这会添加另一列,因此会增加结果集中的数据总量。

您可以将此查询编写为:

SELECT t.*, const.totalcount
FROM table t cross join
     (select count(*) as totalcount from table) const;

这可能比运行两个查询快,也可能不快。两个查询涉及查询运行开销——编译查询、来回传输数据。这会添加另一列,因此会增加结果集中的数据总量。

比将其拆分为两个查询更快、相同或更慢?-值得拆分,这不仅是因为速度,而且主要是因为当前查询没有意义。说真的,你想用它表达什么?@David:我想先问一下这个问题背后的逻辑。乔恩3;大卫3;Ivan 3-假设您返回了3行。在这里返回3的原因是什么?您已经检索到了所有行,不能只对它们进行计数吗?作为行数的3对于特定行有什么共同点?如何更快?-你对mysql性能优化了解多少?你意识到你在问题中提供的查询的执行计划了吗?@David:在你开始优化并理解如何正确优化之前,不要尝试。说真的,胡思乱想会让事情变得更糟。因此,在此之前,只需遵循语义并执行尽可能多的合理查询即可。在这种情况下,计数和选择数据没有共同点,因此应执行separately@zerkms很公平。你觉得刚刚发布的最新答案如何?你能把你的答案写在评论里吗?这是个好主意还是个坏主意?我喜欢把一个问题标记为已解决。@David:第一条性能优化规则:只优化慢的部分。因此,在尝试优化任何内容之前,请确保它是应用程序中最慢/最低效的部分。比将其拆分为两个查询更快、相同或更慢?-值得拆分,这不仅是因为速度,而且主要是因为当前查询毫无意义。说真的,你想用它表达什么?@David:我想先问一下这个问题背后的逻辑。乔恩3;大卫3;Ivan 3-假设您返回了3行。在这里返回3的原因是什么?您已经检索到了所有行,不能只对它们进行计数吗?作为行数的3对于特定行有什么共同点?如何更快?-你对mysql性能优化了解多少?你意识到你在问题中提供的查询的执行计划了吗?@David:在你开始优化并理解如何正确优化之前,不要尝试。说真的,胡思乱想会让事情变得更糟。因此,在此之前,只需遵循语义并执行尽可能多的合理查询即可。在这种情况下,计数和选择数据没有共同点,因此应执行separately@zerkms很公平。你觉得刚刚发布的最新答案如何?你能把你的答案写在评论里吗?这是个好主意还是个坏主意?我喜欢把一个问题标记为已解决。@David:第一条性能优化规则:只优化慢的部分。因此,在尝试优化任何东西之前,请确保它是应用程序中最慢/最低效的部分。这不是很有启发性,也许您可以从中收集信息@大卫:在你开始理解解释、索引等之前,不要尝试优化查询。只是因为这是一个复杂的问题,你已经尝试过的随机尝试只会让事情变得更糟。不要认为2个查询比1个查询更糟糕,这不是真的。不太接近。不是很有启发性,也许你可以从中收集信息@大卫:在你开始理解解释索引之前,
etc只是不尝试优化查询。只是因为这是一个复杂的问题,你已经尝试过的随机尝试只会让事情变得更糟。不要认为2个查询比1个查询更糟糕,这不是真的。甚至不接近。值得一提的是,将语义数据变成混乱的优化只有在有意义时才有意义,而不仅仅是作为一个为什么不步骤。值得一提的是,将语义数据变成混乱的优化只有在有意义时才有意义,而不仅仅是作为一个为什么不步骤。