对于一篇有类别的帖子,速度更快的是:几个数据库调用或额外的PHP代码


For a post with categories, what is faster: Several database calls or additional PHP code?

我正在设计一个博客数据库。我希望帖子属于任何数量的类别,包括无(即类别数量=0,1,2,3,…)。

我知道设计这样一个数据库的常见方法(例如在Wordpress中)是有一个帖子表、一个类别表和一个关系表,因此:

table relationships
    column relationship id
    column post id
    column category id

但这意味着,要显示一篇文章,我的脚本必须至少进行三次数据库查询。这对我来说似乎很慢。

这就是为什么在另一个博客中,我只有一个帖子表,其中包括一个类别的varchar列,我在其中插入了一个包含所有类别名称的字符串,我用PHP对其进行了解析,因此

table posts
    column post id
    ... (many other columns)
    column categories

其中列类别包含的字符串可能如下所示:

apples,oranges,bananas

这是我在PHP中简单地CCD_ 1编写的。

请解释为什么我应该避免第二种方法(一个表,爆炸)它一定有什么问题,我很怀念,因为它在博客软件中不常用。


注:

可能仍然有一个列出类别的表,在创建帖子时会在其中写入新的类别,并从中绘制类别列表以在侧边栏中显示它们。

我预计对帖子的查询会比对类别中的帖子的查询多得多,这就是为什么我不太担心在第二个数据库中查询某个类别的帖子,这在第一个数据库中可能会更快。

在第二种情况下,按类别查找帖子会遇到巨大问题。

例如,您编写了关于编程语言的帖子,并希望在单独的页面上显示所有关于python、php、ruby等的帖子。。。但您不能向数据库编写简单快速的请求,因为您违反了第二个数据库方案中的1范式。

JimL已经提到了JOIN,它允许通过链接表post2category 进行1个请求并从标准多对多关系方案中获得所有需要的信息