use*_*331 5 c# oledb performance ms-access ms-office
我正在使用 C# 在 Visual Studio 2008 上编写一个应用程序。应用程序从 access 文件读取数据,然后生成 txt 文件。我正在使用一个包含 1.000.000 条记录且大小接近 1GB 的 mdb 文件进行一些测试。代码如下,整个过程需要 8 - 10 分钟才能完成。
var connStr = string.Format("Provider =Microsoft.Jet.OLEDB.4.0; Data Source={0};Persist Security Info=False", this.dbPath);
using (var conn = new OleDbConnection(connStr))
{
using (var command = conn.CreateCommand())
{
command.CommandText = "SELECT * from Registros r, FOIDS f where r.TICKET = f.TICKET";
command.CommandType = System.Data.CommandType.Text;
conn.Open();
int i = 0;
string ticket = string.Empty;
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
i++;
if (!reader.IsDBNull(reader.GetOrdinal("r.TICKET")))
{
ticket=reader.GetString(reader.GetOrdinal("r.TICKET"));
// Some process
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
今天我收到了一个 accdb 文件 (Access 2007),因此我将连接字符串更改为以下内容:
connStr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=False", this.dbPath);
Run Code Online (Sandbox Code Playgroud)
但更改后,读取新文件每条记录大约需要 4-5 秒!所以,我的整个过程需要很多天才能完成!我尝试将 accdb 文件转换为旧的 mdb 文件,然后使用以前的连接字符串再次读取,但问题仍然存在。我认为是数据库本身的问题,但我不知道该怎么办,在互联网上我没有找到任何有关此类问题的信息。
有任何想法吗?建议?
小智 4
根据我的经验,5年前。
其中一个Access数据库的记录超过20000条,大小约为150MB。它开始变慢并且性能直线下降。因此转向 SQL。
您可以考虑使用 SQL 精简版或 sql lite
谢谢