您的位置:首页 > 其它

用概率论的方法实现理想化程序

2006-01-09 22:48 302 查看
碰到的问题如下
http://community.csdn.net/Expert/topic/4503/4503918.xml?temp=.6404383
我有一个网页需要从TextArea上传一千条记录信息,然后插入后台数据库中,ASP中的实现是通过循环调用一千次插入的存储过程,但是这样的执行效率非常低,前台网页需要等好几分钟才能得到上传成功的消息,请问有没有什么好的办法,能够在几秒钟之内完成这一千条记录的插入问题
我照你的方法试了一下,有两个问题不知如何解决:1,我需要的是1000条Insert SQL语句,每条语句可能有1000个字符长,总共最长可能是100万个字符,SQL Server最大只支持8000个字符;2,Insert的内容可能数据库中已经有了这条记录,这时候就要用Update语句,而且最后要统计总共插入了多少条有效记录。这两个问题该如何解决呢?
制造一个存储过程
@str是一个输入值
exec sp_executesql @str

asp里是这么写
sql="insert into tryfangq([user],[count]) values('x',1)"
sql=sql & " insert into tryfangq([user],[count]) values('t',2)"
asp怎么调用存储过程我就不写了,这样的是一次调用全部执行

制造一个存储过程
@str是一个输入值
exec sp_executesql @str

asp里是这么写
sql="insert into tryfangq([user],[count]) values('x',1)"
sql=sql & " insert into tryfangq([user],[count]) values('t',2)"
asp怎么调用存储过程我就不写了,这样的是一次调用全部执行

join 是一个script函数
参考帖子http://community.csdn.net/Expert/topic/4497/4497092.xml?temp=.9665644
一般情况下无所的,如果碰上大字符串连接的时候就需要,不用看meizz写的,看底下的vbs版本的
还有可以找个手册看看
那给你简单讲一下数学期望,并把你的问题建立一个数学模型
你要去检查textarea的值是不是在数据库了,现在你的方法是这样的:每一次都检查一下,然后呢,再去添加
我想到的呢是:按k个一组,混合在一起去检查一次,如果这个k个混合的都不是和数据库里相同就一次性的insert,否则就分别进行化验,这样总共要化验k+1次,假定,textarea的值与数据库中的相同的概率是p,且textarea的值都是互不影响的话,我们可以用如下方法解:
q=1-p,则k个值的混合不在数据库中的概率为q的k次方,有可能在的概率为1-q的k次方,而textarea的值需要检查的次数的X是一个随机变量,其分布率为:
X 1/k 1+(1/k)
pk q的k次方 1-q的k次方
于是每个textarea的值平均需化验的次数为
E(X)=(1/k)*q的k次方+(1+1/k)(1-q的k次方)=1-q的k次方+1/k
N个数平均需化验的次数为
N*(1-q的k次方+1/k)
由此可知,只要选择k使
1-q的k次方+1/k<1

q的k次方-1/k>0
当p固定时,我们选取k使得
L=1-q的k次方+1/k
取得最小值,这时就是最好的分组方法,当然我们这里有个概念就是不能大于8000个字符的上限
例如p=0.1当k=4时,若N=1000,那么N个值平均只需化验
594次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: