mysql按地区保存商品_MySQL-mysql 分地区记录查询

如果不是商品对于销售城市的划分相对固定的话

可以考虑使用分组的方式来做

也就是说 有 商品表,城市表,组表,城市组关系表,商品组关系表

1万个商品 和 880个城市 组成的关系表 如果全部添加 有880万数据

1万个商品 20个组 880个城市 如果全部添加 只有

(10000X20)+(20X880)

20万(商品组关系表)+19360(城市组关系表)的数据

并且实际上也不可能有这么多的数据

而且这是在 允许 一个商品对应多个组的情况下

如果一个商品只允许对应一个组

那么数据量会更小(虽然组的数据量可能会增加)

→。→被提醒了。

在极端条件下 分组的方式 也有很大的数据量

也就是说 1万个商品,有1万个分组的情况。

这种情况下 虽然数据会比 原本的多对多模式要少,但是依旧会有很大的数据量。

而还有可能的方式,就是使用位运算的方式

例{

北京的八大城区,可以用 10011001八位二进制数代替是否在该地区销售。

而在存储进数据库时 二进制数可以转化为整数存储。

而直接存储880位的全部城市 则数据过大,查找起来并不方便。

因此,还是需要进行分组。

而在这种分组中,每一组代表了一些城市,这些城市可以是销售区域,也可以是非销售区域。

通过位运算的方式来确定该组中每个城市是否销售。

还可以通过各种位运算来快速确定哪些城市属于销售区域。

比如,分段运算。

比如,将第一位设置成为1则代表该分组下所有城市皆属于销售区域。

位运算的方式,虽然会记录你可能用不到的信息(非销售区域的信息)

但是这些记录仅占1位的位置。

而位运算的方式,则没有了分组方式中存储关系的空间和过程。

因为位运算方式的分组,是“约定俗成”的。

相比分组的方式,位运算的方式会进行更多的运算。

并且对于每个组中的每一位代表了什么,也要进行存储——不一定存储在数据库中了。

位运算的方式并不一定适合你现在遇到的问题,

只是可能在遇到类似问题的时候比分组的方式更合适。

因此在这里记录下来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值