我在Windows 7上使用ServerStack.OrmLite 4.0。 我使用OrmLite创建了一个表,并在Sqlite文件中插入了大约100行数据。 Db.Select()的时间花了大约1分钟。当我将数据库更改为mysql时,它立即返回结果。我也尝试使用另一个GUI软件访问sqlite数据库,并尝试执行一些sql语句,他们都运行良好。有人有任何线索吗?用于SQLite的ServiceStack.Ormlite,运行速度非常慢
更新,代码:
static void Main(string[] args)
{
string dbName = "testdb.sqlite";
var path = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if (!System.IO.File.Exists(path + "/" + dbName))
{
System.IO.File.Create(path + "/" + dbName).Dispose();
}
var dbFacory = new OrmLiteConnectionFactory("Data Source=./testdb.sqlite;Version=3;UTF8Encoding=True;", SqliteDialect.Provider);
//var dbFacory = new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider);
var db = dbFacory.OpenDbConnection();
db.DropAndCreateTable<TestTable>();
db.DropAndCreateTable<BasicPersonnelInfo>();
Console.WriteLine("Starts at : {0}", DateTime.Now.Second);
for (int i = 0; i < 100; i++)
{
db.Insert<TestTable>(new TestTable { TestField = i.ToString()});
db.Insert<BasicPersonnelInfo>(new BasicPersonnelInfo { Test3 = i.ToString()});
}
Console.WriteLine("Inserting Completed;");
Console.WriteLine("Select at : {0}", DateTime.Now.Second);
db.Select<BasicPersonnelInfo>();
Console.WriteLine("Ends at : {0}", DateTime.Now.Second);
Console.WriteLine("Prese anykey to quit!");
Console.ReadKey();
}
我正在将SQLite保存到磁盘。谢谢,我试过在内存中使用SQLite数据库。它仍然很慢(花费大约相同的时间,就像我从内存中的SQLite数据库中进行选择一样),因此文件权限已被分解。我不知道发生了什么事。 – gnaix
@ gnaix如果你可以创建一个独立的问题并将其发布到github存储库,那么它绝对不应该在1分钟左右的时间内使用SQLite插入100行,我可以看看。 – mythz
[进程监视器](https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx)可以帮助您。 – labilbe