首页 > 解决方案 > 大型数据库表的最佳方法结构

问题描述

假设我有一个应用程序,用户可以在其中上传包含产品的文件。特殊性是用户可以上传相同的产品,但有一些不同的东西,如数量、描述、价格或供应商甚至类别,这让我说一个用户可以有很多产品,但一个产品只能有一个用户。问题是..如果我有 1000 个用户并且每个用户上传一个包含 100.000 个产品的列表,我的表产品将非常非常大,所以我认为性能会有一些问题。我第一次考虑为每个用户制作一个产品表,比如 table_products_user_id,但我认为这不是好方法,所以我需要帮助。请提出更好的方法。

标签: databasepostgresqle-commerce

解决方案


如果不同的用户与同一个产品相关联,您不必多次存储每个产品。

如果产品都是不同的,那么设计很简单:两个具有外键关系的表。

1000 乘以 100000 就是 100000000,这个数字很大,但是 PostgreSQL 没问题。

如果您确保对大表的所有访问都是通过索引进行的,那么查询将会很快。

如果您需要顺序扫描,但您知道例如您总是为某个用户查询产品,那么按用户对大表进行分区会有所帮助。

一个重要的考虑因素是您希望如何摆脱旧数据。对表进行分区可以很方便。


推荐阅读