database - 大型数据库表的最佳方法结构
问题描述
假设我有一个应用程序,用户可以在其中上传包含产品的文件。特殊性是用户可以上传相同的产品,但有一些不同的东西,如数量、描述、价格或供应商甚至类别,这让我说一个用户可以有很多产品,但一个产品只能有一个用户。问题是..如果我有 1000 个用户并且每个用户上传一个包含 100.000 个产品的列表,我的表产品将非常非常大,所以我认为性能会有一些问题。我第一次考虑为每个用户制作一个产品表,比如 table_products_user_id,但我认为这不是好方法,所以我需要帮助。请提出更好的方法。
解决方案
如果不同的用户与同一个产品相关联,您不必多次存储每个产品。
如果产品都是不同的,那么设计很简单:两个具有外键关系的表。
1000 乘以 100000 就是 100000000,这个数字很大,但是 PostgreSQL 没问题。
如果您确保对大表的所有访问都是通过索引进行的,那么查询将会很快。
如果您需要顺序扫描,但您知道例如您总是为某个用户查询产品,那么按用户对大表进行分区会有所帮助。
一个重要的考虑因素是您希望如何摆脱旧数据。对表进行分区可以很方便。
推荐阅读
- javascript - 获取字符串中所有出现的正则表达式模式
- c# - 如何通过字典中不区分大小写的键获取原始大小写键
- javascript - 扩展内容时如何进行过渡?
- python - 使用 Scrapy 从图像中抓取 url
- php - php curl ssl验证
- java - 如何从文档文本中查找相关字段?
- selenium - 在加载更多数据时在 selenium 中向下滚动 - 延迟加载
- java - 由于防止类加载器泄漏和 c3p0,tomcat 无法正常关闭
- javascript - 为什么我们在打字稿中使用 HTMLInputElement?
- laravel - Laravel 5.3 仅在同一个表中的另一行不存在时才返回结果