У меня есть база данных sqlite с около 22 миллионами записей. У меня есть индексы на правильных столбцах (в столбцах «где»). Когда я делаю запрос (который возвращает около 80 000 строк), используя sqlitestudio (редактор sqlite), запрос занимает около секунды для запуска. Но я подозреваю, что это связано с какой-то формой разбивки на страницы.Как ускорить доступ к данным?
Однако .. когда я запускаю тот же запрос в C# с использованием system.sqlite.data, потребуется итерация через 80 000 записей.
Есть ли способ ускорить это? Должен ли я, возможно, написать обертку на sqlite.dll?
Я проверил план выполнения и его то же самое в sqlitestudio и в коде C#. Similar issue
Хотя догадывался ответы оценены и могут дать представление (а иногда и ответ) Я был бы признателен конкретные ответы (то есть те, которые вы знаете, что на самом деле работает)
Heres код ...
using (var command = new SQLiteCommand(conn))
{
command.CommandText = "select cell, lat, lon from cell_towers where mcc = @mcc and net = @net ";
command.Parameters.AddWithValue("@mcc", MCC);
command.Parameters.AddWithValue("@net", MNC);
using (SQLiteDataReader rdr = command.ExecuteReader())
{
// In here it takes around 1-2 minutes to loop through. Even with no code inside the loop
while (rdr.Read())
{
}
}
}
Edit 1:
Я запустить тот же запрос с использованием sqlite3.exe (программа командной строки можно скачать с sqlite.org) а и его выход переходит в консольное окно. Это займет много времени, чтобы перебрать все записи и распечатать их в командном окне .. но помните ... его ПЕЧАТЬ в КОМАНДНОЕ ОКНО ....
Не знаю, не было меня - но .. это занимает 1-2 минуты за цикл? что кажется невероятно медленным, что происходит, если (если вы не хотите что-то сделать лучше), поскольку вы скрыли то, что он делает в цикле, вы просто берете данные у своего читателя и просто пишете необработанный объект на локальный диск. оптимизирует это, все еще так долго? – BugFinder
Вот как долго требуется, чтобы весь результирующий набор был зациклен даже с НИЧЕГО в цикле. Это та часть, которая меня заводит. Но даже с кодом в (простое назначение свойств класса из столбцов) это по-прежнему занимает столько времени. Как вы думаете, поможет ли индекс в столбцах результатов? – Eminem
Сделал небольшое изменение в моем комментарии к моменту – Eminem