使用数据库连接本地文件sqlite,每次查询返回的结果 都是重新从硬盘读取.这样速度太慢了
有没有办法类似Everything一样,保持数据库一直是常驻内存,然后再内存中读取,对于频繁查询有速度的提升帮助.
下面是通义千问给出的解决办法,希望能加载到模块中实现,
在C#中使用System.Data.SQLite库实现SQLite内存数据库,可以通过以下方法实现:
纯内存数据库
使用连接字符串"Data Source=:memory:"
创建完全运行在内存中的数据库,所有操作不涉及磁盘IO,速度极快。但程序关闭后数据会丢失12。
内存+文件混合模式
通过"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();
}
}