社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

每个用户都应该有mysql表吗?

Daniel dos Santos • 5 年前 • 1486 次点击  

对于有用户的网站。每个用户都有能力创建任意数量的,我们称之为“posts”:

效率方面-是为所有帖子创建一个表,为每个帖子保存创建帖子的用户id,还是创建不同的 桌子 对于每个用户,只放置该用户创建的帖子?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40982
 
1486 次点击  
文章 [ 5 ]  |  最新文章 5 年前
avik
Reply   •   1 楼
avik    13 年前

你的第一个提议 user 单身 post 桌子是标准的方法。

目前,posts可能是站点上唯一一个特定于用户的功能,但是想象一下,它可能需要在将来增长,以支持用户拥有消息、首选项等。现在,您的按用户划分表的方法导致需要创建的表数量激增。

Mark Byers
Reply   •   2 楼
Mark Byers    13 年前

如果性能是一个问题,您应该了解数据库索引。虽然索引不是sql标准的一部分,但几乎所有数据库都支持索引以帮助提高性能。

我建议您为所有用户的帖子创建一个表,然后向该表添加索引以提高搜索性能。例如,可以在 user 列,以便您可以快速查找给定用户的所有文章。根据应用程序的要求,您可能还需要考虑添加其他索引。

Mat venkat
Reply   •   3 楼
Mat venkat    13 年前

具有不同表数的模式通常是错误的。用一张桌子写你的帖子。

driis
Reply   •   4 楼
driis    13 年前

很好地回答了一个具体的问题:就查询效率而言,拥有小表总是更好的,因此每个用户一个表可能是最有效的。

但是,除非你 很多 对于帖子和用户来说,这不太重要。即使有数百万行,使用位置良好的索引也会获得良好的性能。

我强烈建议不要使用表/用户策略,因为它会给您的解决方案增加很多复杂性。当你需要查找,比如说,在一年内发布过某个主题的用户时,你会如何查询?

需要时进行优化。不是因为你担心事情会变慢。(即使需要优化,也会有比每个用户的表更简单的选项)

Guffa
Reply   •   5 楼
Guffa    10 年前

当您向数据库中添加更多数据时,数据库布局不应更改,因此用户数据肯定应该在一个表中。

也:

  • 拥有多个表意味着您必须动态创建查询。

  • 一个表的缓存查询计划不会用于任何其他表。

  • 在一个表中包含大量数据不会对性能产生多大影响,但包含大量表会产生多大影响。

  • 如果要向表中添加索引以加快查询速度,则在单个表上执行该操作要容易得多。