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