或许你觉得这样的方式读取数据库会更快一些

老秋先生 2012-11-28 05:25:59
我现在需要做一个MRP运算,他的结构大概是这样的。

电动车
轮子 发动机 电池 外壳 。。。

递归解析:轮子由外胎 内胎组成
外胎又由:塑料 + A 组成
塑料又由 B 和 D组成
B 由。。。。。。。。。。。。
现在我需要计算的动作是:生产 电动车A,电动车B,电动车C
总共需要多少物料,是什么物料?
现在仓库里面是否有这样的东西可以用?
我需要采购多少?

物料结构如此深不可测的递归下去,问我的数据库应该怎么设计才合理?
怎样才能查询的速度?

当然现在有更悲催的事情。

因为计算错综复杂,所以我需要选择两条路:
1、程序代码计算。
优点:维护容易,代码易读。
缺点:需要从数据库先读到内存再进行计算,本身速度已紧缺。
2、数据库代码计算。
优点:计查计算。
缺点:恶心的代码,估计得是两三页密密麻麻的货。还有那坑爹的游标等等。

程序代码抉择之路:
1、将整个物料结构表读取到内存中,再执行计算
优点:减少对数据库的查询,减少服务器压力,也加快运算速度。
缺点:
1.1 需要消耗一定的内存。
1.2 在加载表到内存也需要时间。
1.3 我不敢我在本地的数据能与数据库查询相媲美,当然会比数据库查询慢多了
2、解决加载表需要时间:在开机时将表加载到内存中,等待运算。
优点:削弱运算时时间
缺点:加大开机时间和一直保持内存占用

数据库运算抉择之路:
1、除了代码恶心 一切安好



求高手解答,为小抉择。 或提供更好的解决方案,我愿以身相许

-- 654635195

...全文
186 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
老秋先生 2012-11-30
  • 打赏
  • 举报
回复
再顶顶~~~
asus09345 2012-11-29
  • 打赏
  • 举报
回复
把SAP的数据库导出来研究研究。
老秋先生 2012-11-29
  • 打赏
  • 举报
回复
自己顶一下~~~~~~
老秋先生 2012-11-28
  • 打赏
  • 举报
回复
是啊 这个就是BOM表结构~ 物料结构表~~ 他们就是这样深入进去的。 但不我太了解他们究竟是如何得到 树, 因为我要计算一个东西之前 我需要先把电动车A的树加载下来,然后再去算他们的可用量
發糞塗牆 2012-11-28
  • 打赏
  • 举报
回复
引用 3 楼 my_only 的回复:
引用 2 楼 DBA_Huangzj 的回复: 引用 1 楼 my_only 的回复:2、解决加载表需要时间:在开机时将表加载到内存中,等待运算 这句是恶心的错。。。Sorry啊!! 不能这么做,因为数据是动态的!前提你的内存要足够大。听说微软下一个SQLServer(不是2012)是内存数据库。对于MRP,要考虑业务,而不是如何用程序去实现。一般的慢主要在报表,这时候可以考虑用空间换时……
有个叫bom结构的,你去了解一下是否合适你们的业务。
老秋先生 2012-11-28
  • 打赏
  • 举报
回复
引用 2 楼 DBA_Huangzj 的回复:
引用 1 楼 my_only 的回复:2、解决加载表需要时间:在开机时将表加载到内存中,等待运算 这句是恶心的错。。。Sorry啊!! 不能这么做,因为数据是动态的!前提你的内存要足够大。听说微软下一个SQLServer(不是2012)是内存数据库。对于MRP,要考虑业务,而不是如何用程序去实现。一般的慢主要在报表,这时候可以考虑用空间换时间,即把一些可以不实时运……
现在非常坑爹的是那个物料结构,业务都实现好了,现在他的业务结构 多的深到90多层分叉
發糞塗牆 2012-11-28
  • 打赏
  • 举报
回复
引用 1 楼 my_only 的回复:
2、解决加载表需要时间:在开机时将表加载到内存中,等待运算 这句是恶心的错。。。Sorry啊!! 不能这么做,因为数据是动态的!
前提你的内存要足够大。听说微软下一个SQLServer(不是2012)是内存数据库。对于MRP,要考虑业务,而不是如何用程序去实现。一般的慢主要在报表,这时候可以考虑用空间换时间,即把一些可以不实时运算的数据冗余。
老秋先生 2012-11-28
  • 打赏
  • 举报
回复
2、解决加载表需要时间:在开机时将表加载到内存中,等待运算 这句是恶心的错。。。Sorry啊!! 不能这么做,因为数据是动态的!

6,129

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧