Я пишу приложение на Visual Studio 2008 с C #.Приложение считывает данные из файла доступа, а затем генерирует текстовый файл.Я делал несколько тестов с файлом mdb с 1.000.000 записей и размером почти 1ГБ.Код такой, и весь процесс занимал от 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
}
}
}
}
}
}
Сегодня я получил файл 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 и после этого чтения снова с предыдущей строкой подключения, но проблема остается.Я думаю, что это проблема с самой базой данных, но я не знаю, что делать, в интернете я не нашел никакой информации с такой проблемой.
Есть идеи?Предложения?