0

在 Django 中,我正在为一个站点测试一些架构,其中一个特性是用户将能够发表本质上相当于博客文章的内容。我最初的想法是建立一个模型Post,并用所有用户的每个帖子填充该表,并使用 id 链接哪个帖子与哪个用户相关联。这会不会效率低下,因为每个查询都必须搜索一个可能很大的表?

或者,我有一个想法,每次创建用户时,将该用户添加到 users 表,然后创建一个名为Posts_by_<user-id>. 然后,查询不是查询一个庞大的表,而是查找Posts_by_与该用户关联的表,并且要解析的数据块要小得多。拥有大量小桌子而不是一张大桌子更有效吗?

所以我的问题是双重的:

1)在Django中,是否可以从view.py文件而不是models.py在我的数据库中生成一个表?2) 无论框架如何,上述方法是结构化数据库的有效方法吗?

4

1 回答 1

2

使用原始 SQL 或使用内部 Django DB API 是可能的。但这不是一个好主意,这就是为什么在 Django 中没有官方支持的方法。

数据库经过精确设计,可让您快速访问数据。如果您知道您经常会通过用户 ID 检索数据,您应该在该字段上创建索引 - 这将告诉数据库创建一个单独的数据结构,该结构将跟踪如何非常快速地为特定用户查找行。

在 Django 中,在单个字段上创建索引看起来像这样:

user = models.ForeignKey(User, db_index=True) 

更新:正如btoueg在评论中指出的那样,Django 会自动为 ForeignKey fields 执行此操作。因此,您只需要为其他字段以及在使用其他框架时手动执行此操作。当然只有在适当的时候——你通常肯定不希望在每个字段上都有一个索引。

于 2013-10-23T19:25:38.150 回答