我正在用C#編寫Visual Studio 2008上的應用程序。應用程序從訪問文件讀取數據,然後生成一個txt文件。我正在做一些具有1.000.000記錄和幾乎1GB大小的mdb文件的測試。 代碼是這樣的,整個過程需要8-10分鐘才能完成。從C#中的Access 2007(accdb)文件中讀取性能真的很差C#
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
}
}
}
}
}
}
今天收到一個ACCDB文件(Access 2007年),所以我改變了我的連接字符串,這一個:
connStr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=False", this.dbPath);
但是,這改變後,讀取新的文件正在約4 -5秒每記錄!所以,我的整個過程需要很多天才能完成! 我已經嘗試將accdb文件轉換爲舊的mdb文件,然後再次讀取以前的連接字符串,但問題仍然存在。我認爲這是數據庫本身的一個問題,但我不知道該怎麼做,在互聯網上我沒有找到任何有關這類問題的信息。
任何想法?建議?
它可能不是讀取MDB所花費的時間,而是「//某個進程」部分?是否可以製作異步? – Matt
我做了一些調試,延遲在reader.Read()指令上。此外,我還添加了一些具有相同結果的日誌,並且我也對該過程進行了評論,結果相同。謝謝你快速的回覆 ! – user972331
你嘗試過壓縮數據庫嗎? –