我在我的名为“cats”的mysql中有一个表,这个表有'cat_id','cat_parent','cat_name',并且我决定让另一个名为“cats_details “,它有'cat_id','cat_description','cat_keywords'等,因为我的类别可以嵌套(每个主类别可以有无限数量的子类别,每个子类别可以有无限数量的子子类别.. .. 。)和类别的数量可能会超过1000.我需要列在一些页面:P。所以我认为最好的办法是有两个表格,一个用于列出类别并搜索其名称,另一个用于获取有关类别的详细信息。所以我的问题是这种情况的最佳方式是什么?使用主键作为MySQL的大表中的外键
1-使用“cats_details”的“cat_id”作为自己的主键和“cats”表的外键。
2-做一个命名为“cats_details”和“cats_details”作为“猫”表的外键的另一列“CAT_ID”的主键“ID”(INT自动递增)列。
对于大量的类别和大量的访问者,这种解决方案的速度会更快吗?
注意:我只在类别详细信息页面中使用JOIN,而不在列表页面中使用JOIN。
在一篇文章中我读过:所有表都必须有一个自动递增主键,尽管当你使用它们作为另一个表的一部分,并且外键必须是另一个列。 – IVIR3zaM
但您的信息我决定使用我的主键作为外键。因为我需要加入“猫”表本身(为了获得每个类别的儿童类别),所以它更好地是重量轻。你对此有何看法? – IVIR3zaM
获取子类别:自联接比嵌套查询(在WHERE子句中指定连接条件)更有效。您可以使用查询性能分析器来验证这一点。 – fjxx