我以前读过的SELECT COUNT(*)
是不符合要求的MySQL
,应该经常避免.(作为一个附带问题,这只是大量行的情况吗?)
我正在使用PHP Data Objects (PDO)
访问权限MySQL
.
我应该如何计算出考虑了性能因素的行?
如果您使用的是MyISAM表,则不会达到性能.MySQL 缓存 MyISAM表中的行数.这就是它能够立即回答COUNT(*)的原因.在这种情况下,MySQL只会从存储的值中读取表中的行数.
[编辑]:来自MySQL性能博客:
对于InnoDB:如果你有这样的查询SELECT COUNT(*) FROM IMAGE WHERE USER_ID=5
此查询将通过执行索引扫描愤怒都执行对MyISAM和InnoDB表同样的方式.对于MyISAM和Innodb,这可以更快或更慢,具体取决于各种条件.
在实际应用程序中,有更多的第二类型的查询而不是第一类型的查询,因此它通常不像它看起来那么糟糕.最典型的是通过管理工具,可以显示它在表统计需要的行数,它也可以应用统计用来显示类似"我们已上传1.344.656图片123.345用户",但这些通常是容易清除.
所以请记住Innodb的不慢的所有COUNT( )查询,但仅适用于COUNT(非常特殊的情况下)查询,而WHERE子句.
同样有趣的读物: