Database design 记录元表中的项目数?

Database design 记录元表中的项目数?,database-design,Database Design,我正在开发一个小的digg风格的应用程序,每天提交20-100个项目。我需要跟踪在任何特定时刻存在多少物品。我知道我没有很多记录,但我仍然不认为执行count()是最好的方法,因为我几乎会在每一页上都这样做。我的想法是专门为元值创建一个表,如total_文章。然后,我会在提交新故事时增加该值,在删除故事时减少该值 这是解决此类问题的常见方法,还是有更好的方法?如果这是一个标准解决方案,那么在将其作为我的解决方案实施时,我应该注意哪些类型的问题?肯定是一种相当常见的问题。这里有几件事我要记住 您的

我正在开发一个小的digg风格的应用程序,每天提交20-100个项目。我需要跟踪在任何特定时刻存在多少物品。我知道我没有很多记录,但我仍然不认为执行count()是最好的方法,因为我几乎会在每一页上都这样做。我的想法是专门为元值创建一个表,如total_文章。然后,我会在提交新故事时增加该值,在删除故事时减少该值


这是解决此类问题的常见方法,还是有更好的方法?如果这是一个标准解决方案,那么在将其作为我的解决方案实施时,我应该注意哪些类型的问题?

肯定是一种相当常见的问题。这里有几件事我要记住

  • 您的数据库引擎-
    COUNT()
    不一定非常昂贵,它只取决于它的实现方式。例如,如果您使用的是MySQL,
    COUNT()
    对于InnoDB表来说是昂贵的。但是,如果使用MyISAM表,记录的数量已经存储为元数据,并且计数非常便宜

  • 在一个阅读量大的站点上,您使用单独元数据表的方法效果很好。然而,管理元数据的任务增加了开销。您可以使用数据库触发器或应用程序中的额外代码来实现这一点,但无论哪种方式,如果您管理的是数据,这将是一项额外的工作

    在写容量大的站点上,每次写入记录时更新元数据的性能影响可能会超过读取
    COUNT()
    (或您可能正在执行的任何元数据获取)的影响

    权衡读/写活动可能是谨慎的。听起来你并不期望有大量的新记录,所以存储自己的记录可能会提高性能