例如:有一张商品信息的基表,Product 里面存着一些商品的信息,售价,等等。。。
现在要 储存 超市里这些商品的信息,因为各个超市的商品售价不一定相同,所以要单独储存超市商品的信息,我新建一张超市商品信息表ShopProduct,这里面有超市的编号,商品的编号,售价,等一些字段。
现在问题来了, 假设有500家超市,每家超市有1万种商品的话,ShopProduct表里就会有500万条数据,如果超市无限增多的时候,ShopProduct表的数据会无限增大
那查询的效率会非常的慢,这种表该如何优化呢?
或者该如何构建这个数据库结构呢?
如果每家超市做一张表的话 那数据库会有N多表,也不太现实吧?有没有更好的办法呢?如果问题解决的话 再加20分
SQL数据库架构问题
答案:3 悬赏:30
解决时间 2021-01-30 11:55
- 提问者网友:神仙爷爷
- 2021-01-30 01:43
最佳答案
- 二级知识专家网友:悲观垃圾
- 2021-01-30 02:30
分区表, 可能可以解决一部分问题.
也就是 按 超市的编号 进行分区管理.
这样, 假设有500家超市,每家超市有1万种商品的话
ShopProduct表 有 500 个分区, 每个分区 1万种商品.
每个超市,检索其 自己的数据的时候, 肯定要 传入 超市编号 这个字段的.
当数据库分析 SQL 语句的时候,会分析要, 对于这个 指定的超市的编号, 我需要去哪一个分区去检索。 知道去哪一个分区去检索的话, 范围就被局限在 这 1万种商品范围内。 不会去查询其他超市的数据。
缺点也有一点, 就是每新建一个超市, 要在数据库上面创建一个新的分区。
还有就是,假如你不传递任何 超市的条件, 仅仅通过 商品的编号 去查询这个商品, 在各个超市的 售价, 那么,查询性能可能会比较低。
也就是 按 超市的编号 进行分区管理.
这样, 假设有500家超市,每家超市有1万种商品的话
ShopProduct表 有 500 个分区, 每个分区 1万种商品.
每个超市,检索其 自己的数据的时候, 肯定要 传入 超市编号 这个字段的.
当数据库分析 SQL 语句的时候,会分析要, 对于这个 指定的超市的编号, 我需要去哪一个分区去检索。 知道去哪一个分区去检索的话, 范围就被局限在 这 1万种商品范围内。 不会去查询其他超市的数据。
缺点也有一点, 就是每新建一个超市, 要在数据库上面创建一个新的分区。
还有就是,假如你不传递任何 超市的条件, 仅仅通过 商品的编号 去查询这个商品, 在各个超市的 售价, 那么,查询性能可能会比较低。
全部回答
- 1楼网友:走,耍流氓去
- 2021-01-30 04:08
有一个观点我不认可:应该是超市放在Shop表里,商品信息放在Product表里,而ShopProduct表只记录前两个表中数据的对应关系,这样比较合理吧;
可以考虑用分区表,或者可以考虑把ShopProduct按地区分为几个表(如东北地区、华北、西北等)
- 2楼网友:何以畏孤独
- 2021-01-30 02:45
如果真有500家超市,每家有1万种商品,可以把产品分20类,建立20个不同 Product表,和20个不同的ShopProduct表。
如果超市继续增加,可以继续细分产品类别。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯