加速 SQLCE 的 insertion
據同事測試,在 WinCE6 上做 SQLCE database insertion 一筆會耗超過 20ms。如果 insert 2048 筆資料,那就會費時超過 40.96 秒!這是一個非常久的時間,因此我們就想要加速它。
查找網路後發現,SQLCE 支援一次 insert 多筆資料,且效率會比較好。語法如下:
INSERT INTO Count_Table (AlarmNum, Counter)
SELECT 0, 0
UNION ALL
SELECT 1, 0
UNION ALL
SELECT 2, 0
UNION ALL
...
以 2048 筆資料為例,改成每 20 筆才 insert 一次,效能竟然由 52.6 秒進步到 4.1 秒!然而再進一步改成每 40 筆 insert 一次,效能似乎沒增加太多。因此考慮程式寫法,SQL command 是放在 char buffer 裡與 stack size 的限制,因此就以 20 筆 insert 一次為最後的做法。
查找網路後發現,SQLCE 支援一次 insert 多筆資料,且效率會比較好。語法如下:
INSERT INTO Count_Table (AlarmNum, Counter)
SELECT 0, 0
UNION ALL
SELECT 1, 0
UNION ALL
SELECT 2, 0
UNION ALL
...
以 2048 筆資料為例,改成每 20 筆才 insert 一次,效能竟然由 52.6 秒進步到 4.1 秒!然而再進一步改成每 40 筆 insert 一次,效能似乎沒增加太多。因此考慮程式寫法,SQL command 是放在 char buffer 裡與 stack size 的限制,因此就以 20 筆 insert 一次為最後的做法。
留言
張貼留言