SQLite在第一个SELECT语句上非常慢

时间:2017-12-07 05:32:06

标签: c# performance caching sqlite

我有一张约90 000行的表格。在磁盘大小(此表的表)上~60 Mb。

要搜索我正在使用模式LIKE '%xxx%'

SELECT * 
FROM table 
WHERE column LIKE '%value%' 
LIMIT 20

列未编入索引,因为当LIKE模式以通配符开头时,SQLite不使用索引。

第一次执行它需要约30秒。在第二次它最多需要100毫秒。我知道冷和热缓存,但我简直无法相信在内存中读取表需要花费很多时间。 Visual Studio分析器显示了不断增长的内存使用量。好。也许搜索太慢了?但不是。简单SELECT * FROM table向我们显示相同的~30秒读取60 Mb。

我尝试使用PRAGMA cache_size = -100000;增加缓存,使用SQLITE_THREADSAFE=0构建sqlite dll。它没有帮助。

我在我的C#应用​​程序中使用System.Data.Sqlite,但在简单sqlite3.dll上进行了测试。相同。数据库使用的是UTF-16le编码。

0 个答案:

没有答案