使用数据库连接本地文件sqlite,每次查询都是重新从硬盘读取.

功能建议 · 13 次浏览
运营:秋风 创建于 1天18小时前

使用数据库连接本地文件sqlite,每次查询返回的结果 都是重新从硬盘读取.这样速度太慢了

有没有办法类似Everything一样,保持数据库一直是常驻内存,然后再内存中读取,对于频繁查询有速度的提升帮助.

 



下面是通义千问给出的解决办法,希望能加载到模块中实现,

 

在C#中使用System.Data.SQLite库实现SQLite内存数据库,可以通过以下方法实现:

  1. 纯内存数据库
    使用连接字符串"Data Source=:memory:"创建完全运行在内存中的数据库,所有操作不涉及磁盘IO,速度极快。但程序关闭后数据会丢失‌12

  2. 内存+文件混合模式
    通过"Data Source=file::memory:?cache=shared"连接字符串创建共享缓存的内存数据库,多个连接可访问同一内存数据库,同时支持通过ATTACH DATABASE绑定物理文件实现持久化‌


using System.Data.SQLite;

class MemoryDB {
    static void Main() {
        // 纯内存模式
        var memConn = new SQLiteConnection("Data Source=:memory:");
        memConn.Open();
        
        // 内存+文件绑定模式
        var hybridConn = new SQLiteConnection(
            @"Data Source=file::memory:?cache=shared;
              AttachDbFilename=C:\temp\backup.db");
        hybridConn.Open();
        
        // 执行SQL操作(示例)
        new SQLiteCommand("CREATE TABLE test(id INT)", memConn).ExecuteNonQuery();
        new SQLiteCommand("INSERT INTO test VALUES(1)", memConn).ExecuteNonQuery();
    }
}


回复内容
CL 1天14小时前
#1

多慢?

要看具体情况,看看是哪里耗时过多,必要的时候去优化一下索引啥的。

其它办法估计没啥用。

回复主贴