大数据量操作,如何提高效率,并且防止程序死锁!(200分)

M

mmboy

Unregistered / Unconfirmed
GUEST, unregistred user!
这里有4个表:
Table1(结果表)
----------------------------------------------------------------------------------------
UID | Result1 | Result2 | Result3 | Result4 | Result5 | Result6 | Result7 | Result8 | Result9 | Result10 |.........Result100
----------------------------------------------------------------------------------------
大概有5000条纪录

Table2(参数表)
----------------------------------------------------------------------------------------
UID |Field1 | Field2 | Field3 | Field4 | Field5 | Field6 | Field7 | Field8 | Field9 | Field10 |.........Fild100
----------------------------------------------------------------------------------------
大概有5000条纪录

Table3(公式定义表)
--------------------------
ID| Name | Define |Target
--------------------------
Name :公式名称;
Define :公式定义;
公式定义方式为参数表(Table2)中各自段之间作数学操作比如 (Field1+Field2) / Field3
Target:制定该公式计算出的结果存储在结果表Table1中的那个字段;
举例如下
----------------------------------------------------
ID| Name | Define | Target
----------------------------------------------------
1 |公式一 |(Field1+Field2) / Field3 | Result2
----------------------------------------------------


Table4(公式绑定表)
——--------------------------------------------------
UID | FBind |
——--------------------------------------------------
FBind是每个UID所绑定的公式名称
----------------------------------------------------
一个UID可以帮定任意多个公式,所以很可能一个UID对应了很多个公式。
在普通情况下一个UID将会对应40个左右的公式。

现在我需要的作的操作是这样的。
我的目标是要填写Table1(结果表)
首先我要对每一个UID(由于业务的要求,每个UID对应的公式不一样,并且不同公式可能他们存储的目标列是同样的,所以必须一个UID一个UID的操作)
在Table4(公式绑定表)取出这个UID对应的一组公式,分析每一个公式(从Table3(公式定义表)中取出Define和Target),形成SQL语句,更新结果表中相应的记录和字段。
但是这样的话,每次操作需要做好几十万次数据库操作,而且由于Table2和Table1字段都非常多,所以操作还是比较缓慢的。

如果只是普通的进行循环,这样操作的是否会导致客户端没响应,服务器的负担也会很重。
但是存储过程能写出来吗?
我可以让时间等待的比较就一点,都可以,但是客户端和服务器不能死机。

我到底该怎么做呢?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部