记录行数

4dc9hkyq  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(248)

假设我们在mysql数据库中有一个“posts”表,顾名思义,它将用户的帖子存储在一些社交媒体平台上。现在我想显示每个用户创建的帖子数。一个可能的解决方案是: SELECT COUNT(*) FROM posts WHERE ……等等;
但至少对我来说,这看起来是一个昂贵的查询。在某个表中保存一个记录,比如使用一个名为(number of theu posts)的列(statistics),不是更好吗。我知道在最后一个场景中,一旦创建了一个post,我就必须更新两个表(post)和(statistics)。你认为最好的解决方法是什么?

aiazj4mn

aiazj4mn1#

像这样的查询

SELECT COUNT(*), user_id
   FROM posts
  GROUP BY user_id

如果在上创建索引,则可以执行索引扫描 user_id 列。读这个。索引扫描速度很快。所以你提出的问题很好。sql和mysql是为这种查询而设计的。
还有,像

SELECT COUNT(*)
   FROM posts
  WHERE user_id = 123456

如果你有 user_id 索引。如果你有一张单独的table,你可以节省几十微秒,也可以不用。这些节省将很难衡量。但是,在服务器性能和软件维护复杂性方面,维护该表都会产生成本。
对于刚刚学会使用数据库软件的人来说,对性能的直觉往往是非常悲观的。为了提高性能,数据库软件包有数千年的程序员工作经验。真的。而且,你自己的东西可能比不上他们。
mysql的开发者为什么要优化这种东西?所以使用mysql的开发人员可以依赖它来解决问题,而不必做很多额外的优化工作。他们是为你做的。花时间让应用程序的其他部分正常工作。

相关问题