用概率论的方法实现理想化程序
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次
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次
相关文章推荐
- 用概率论的方法实现理想化程序
- 退出Android程序时清除所有activity的实现方法
- 抽奖程序实现方法
- Python实现输出程序执行进度百分比的方法
- 微信小程序自定义toast实现方法详解【附demo源码下载】
- 整数划分(递归法),这个程序是实现输出整数的划分有多少种方法,接下来第二篇会实现级能输出划分整数的因子和输出划分的种个数方法
- javascript实现在网页中运行本地程序的方法
- Java利用剪贴板实现交换程序间数据的方法
- 效仿UNIX程序grep的实现方法改写模式查找程序
- 实现程序互斥运行的几种方法
- winform实现让程序只能打开一个实例(总结3方法)
- 【转】五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(下)
- 用代码实现为程序创建快捷方式的二种方法
- C#实现程序启动唯一实例的一种方法
- linux 通过脚本实现自动重启程序的方法
- 1407 用两种方法对IPV6地址进行压缩的c程序实现
- 窗体中拖动panel,并且不会拖动至窗体外部程序实现方法。
- java线程控制,当stop按钮就停止,当start按钮就开始运行,当按stop时程序又停止的实现方法
- 微信小程序下拉刷新上拉加载的两种实现方法
- Autohotkey守护程序的实现方法