在設(shè)計(jì)軟件的過程中,往往會(huì)遇到批量的添加數(shù)據(jù),比如導(dǎo)入excel,直接在DataGridView控件中添加數(shù)據(jù)再保存到數(shù)據(jù)庫等等。
而我們的第一辦法往往是使用for或者foreach循環(huán)來一條條讀取并插入數(shù)據(jù)庫,雖然說這樣沒有什么問題,但是效率卻很低,經(jīng)過我們測(cè)試發(fā)現(xiàn)在局域網(wǎng)中,1萬條數(shù)據(jù)要花費(fèi)3分鐘左右的時(shí)間才能走完。這對(duì)于強(qiáng)調(diào)軟件效率的我們來說是不能接受的。那么應(yīng)該如何優(yōu)化呢?
我們又想到了另一種辦法,即"Insert into TableName Values(' ',' ',' '),Values(' ',' ',' ')",這種方法在一定程度上提高不少的效率,但是這種方法有幾個(gè)弊端。比如說,在SQL Server 2000中它就不支持這種語法,會(huì)提示"第 2 行: ',' 附近有語法錯(cuò)誤。"的警告,批量操作也就無從談起。再比如,這種方法么次最多也只能Insert 1000條數(shù)據(jù),如果超過了1000條就會(huì)報(bào)錯(cuò):"INSERT 語句中行值表達(dá)式的數(shù)目超出了 1000 行值的最大允許值。"。當(dāng)然了,我們可以分為幾次,每次添加一千條數(shù)據(jù),這樣還是比方法一的效率高不少。經(jīng)過測(cè)試(局域網(wǎng)),1W條數(shù)據(jù)將會(huì)耗時(shí)15秒左右。
經(jīng)過測(cè)試,我們發(fā)現(xiàn)第二種方法要比第一種快了很多,這也是我們所追求的 為沈陽軟件訂制企業(yè)提供更好的服務(wù)。