2012-05-17 25 views
2

背景:
我有一個SQLite3數據庫,我用CSharp SQLite來查詢數據。我的問題是,使用JOIN或ORDER BY調用的任何查詢都非常慢(使用CSharp-SQLite時爲0.1秒,使用orig。SQLite時爲0.003秒)。如何使用CSharp SQLite加速SQL查詢?

對於CSharp SQLite,最新的benchmarks表明它最多慢了2倍,這很好,但是我得到的時間是30倍慢。

現在,我已經索引了數據庫中的所有必需字段,並且具有相應的主鍵和外鍵。另外,原來的SQLite運行這些查詢很好。

問:
我不得不使用SQLite的託管代碼端口,那麼有沒有什麼我失蹤這裏還是一個電話,我需要做出CSharp SQLite?有沒有替代的SQLite庫端口在那裏?

+1

你需要一個完整的端口,或者你只需​​要能夠輕鬆地使用C#中的SQLite? [System.Data.Sqlite](http://sqlite.phxsoftware.com/)是標準SQLite的ADO.NET包裝器。 –

+0

全部端口。 System.Data.SQLite作爲C++代碼的包裝,仍然需要C++運行時。我們不能使用任何使用這些runtmes的東西。 –

+0

哎呀。從查看基準代碼,它似乎只涵蓋非常基本的查詢。測試查詢中沒有任何JOIN或ORDER BY子句。也許C#-SQLite在那個部門真的很慢? –

回答

5

Csharp-sqlite forums中提出了這個精確的問題,並且成功的解決方案是在編譯時刪除SQLITE_ENABLE_OVERSIZE_CELL_CHECK標誌。這是一個DEBUG標誌,導致不需要但是密集的計算。