Я использую SQLite с C#.SQL метод занимает много времени
Я использую следующий метод для прокрутки списка телешоу и их эпизодов и вставки их в базу данных. Он заканчивается входом около 1200 рядов и занимает 2 минуты 28 секунд. Кажется, что это довольно медленно, поэтому я хотел бы, чтобы люди просматривали мой метод и смотрели, что я делаю что-то глупое (я к этому не привык).
public void InsertAllEpisodes(List<TVDBSharp.Models.Show> showList)
{
using (SQLiteConnection dbconnection = new SQLiteConnection(connectionString))
{
string seasonNumber;
string episodeNumber;
string insertShowSQL = @"INSERT INTO AllEpisodes (Key, ShowName, ShowId, EpisodeName, SeasonEpisode) VALUES (@Key, @ShowName, @ShowId, @EpisodeName, @SeasonEpisode)";
foreach (var show in showList)
{
foreach (var episode in show.Episodes)
{
if (episode.SeasonNumber != 0)
{
string seasonEpisode = "default";
if ((episode.SeasonNumber != 0) && (episode.SeasonNumber.ToString().Length == 1)) { seasonNumber = "0" + episode.SeasonNumber.ToString(); }
else { seasonNumber = episode.SeasonNumber.ToString(); }
if (episode.EpisodeNumber.ToString().Length == 1) { episodeNumber = "0" + episode.EpisodeNumber.ToString(); }
else { episodeNumber = episode.EpisodeNumber.ToString(); }
seasonEpisode = seasonNumber + episodeNumber;
SQLiteCommand command = new SQLiteCommand(insertShowSQL, dbconnection);
command.Parameters.AddWithValue("Key", show.Id + seasonEpisode);
command.Parameters.AddWithValue("ShowName", show.Name);
command.Parameters.AddWithValue("ShowId", show.Id);
command.Parameters.AddWithValue("EpisodeName", episode.Title);
command.Parameters.AddWithValue("SeasonEpisode", seasonEpisode);
dbconnection.Open();
try
{
command.ExecuteScalar();
}
catch (SQLiteException ex)
{
if (ex.ResultCode != SQLiteErrorCode.Constraint)
{
File.AppendAllText(programDataPath + "SQLErrors.txt", ex.Message + "\n");
}
}
dbconnection.Close();
}
}
}
}
}
Вы открываете и закрываете соединение с базой данных внутри внутреннего цикла 'foreach' - это должно выполняться вне петель. Кроме того, каков счет 'showList' и' show.Episodes' соответственно? – Rhys
В дополнение к тому, что сказал Райс, сколько строк уже в вашей таблице, и есть ли у вас много индексов на этой таблице? – ohiodoug
@Rhys 6 Shows, 1300 Episodes – Jrow