У меня есть большой файл базы данных .sdf
на мобильном устройстве Windows, которое мне нужно запросить. Файл содержит 40 000 записей. Я пытаюсь сократить время, затрачиваемое на выполнение запроса. В настоящее время это около 8 секунд, что очень много времени, чтобы пользователь мог дождаться результатов.Самый быстрый способ запросить файл базы данных SQL Server CE в Windows Mobile 6.5?
Сначала я использовал DataSet
, установив SqlCeConnection
и заполняющий адаптер, подключенный к набору данных. Также попытался схожий с DataTable
, результаты работы были почти одинаковыми. Используя DataSet
или DataTable
завершенный запрос за 8 секунд.
Последнее, что я пробовал, - это просто использовать Reader()
. Это дает мне несколько лучших результатов, но только на полсекунды (запрос завершен за ~ 7.5 секунд).
string lastName;
lastName = "";
string connectionString = @"Data Source='/Path/To/MyDatabase.sdf' Max Database Size = 128; Max Buffer Size = 1024;";
string strSql = "SELECT LastName FROM employee_list WHERE LastName = 'Johnson'";
using (SqlCeConnection mConnection = new SqlCeConnection(connectionString))
{
mConnection.Open();
using (SqlCeCommand mCommand = new SqlCeCommand(strSql, mConnection))
{
using (SqlCeDataReader reader = mCommand.ExecuteReader())
{
while (reader.Read())
{
lastName = (string)reader["LastName"];
}
}
mCommand.Dispose();
}
mConnection.Close();
mConnection.Dispose();
}
Любые идеи, как я могу сделать это быстрее?
создать индекс на LastName. – Will
Спасибо! Это было так. Его 8 секунд на самом первом сканировании и 1 секунда при каждом следующем сканировании. Как предварительно загрузить индекс столбца, чтобы скрыть задержку при первом сканировании? – 22332112
Не уверен. Вы можете сделать это при первом запуске в фоновом режиме, я полагаю ... – Will