用概率論的方法實現理想化程序

碰到的問題如下

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次

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章