2012-10-05 20 views
4

我已經寫了這個線程,因爲我已經打了三個整天這個問題!在windows手機中的SQLCE性能很差

基本上,我有一個程序收集一個大的CSV文件,並將其用作本地SQLCE數據庫的輸入。 對於這個CSV文件中的每一行(代表某種對象,我們稱之爲「狗」),我需要知道這條狗是否已經存在於數據庫中。 如果它已經存在,請不要將其添加到數據庫中。 如果它不存在,請在數據庫中添加一個新行。

問題是,每個查詢大約需要60毫秒(一開始,當數據庫爲空時),並且當數據庫大約爲1000行時,它會上升到大約80ms。 當我必須通過1000行(在我看來並不多)時,這需要大約70000毫秒= 1分10秒(只是爲了檢查數據庫是否是最新的),太慢了!考慮到這一數量可能有一天會超過10000行,我不能指望我的用戶在他的數據庫同步之前等待超過10分鐘。 我試過使用編譯後的查詢來代替,但這並沒有提高性能。

即時搜索的字段是一個字符串(這是主鍵),它被索引。

如果有必要,我可以用代碼更新這個線程,這樣你就可以看到我做了什麼。在Windows Phone

回答

3

SQL CE是不是最快的動物,但你可以優化它:

本文介紹了一些事情可以做:WP7 Local DB Best Practices

他們ALS提供了WP7的項目,可以被下載,所以你可以玩代碼。

在本文頂部,我建議將您的PK從字符串更改爲int;字符串佔用的空間大於整數,因此您的索引將更大,並需要更多時間從獨立存儲加載。當然,在SQL Server中搜索字符串比ints/longs搜索要慢。