Hi,
ich habe ein Problem mit der Geschwindigt meines Programmes.
Ich lese aus einer pg Datenbank deutsche Sätze aus, zu denen ich dann noch zusätzlich die passende englische Übersetzung hole.
Durch meine Konstruktion ist das ganze ziemlich langsam geworden, zumal es bis zu 3000 Sätze sein können die ich in eine Listbox einlese.
Ich habe leider keinen Ansatz, was da wen ausbremst.
Hätte jemand eventuell ein paar Tips und Tricks das ganze etwas zu optimieren?
vielen dank im Vorraus,
nebul
[highlight=c#]
public void verbindung(string wort)
{
String dbConnString = "Server=localhost;Port=5432;Database=term;User Id=postgres;Password=test;Encoding=UNICODE";
NpgsqlConnection conn = new NpgsqlConnection(dbConnString);
try
{
conn.Open();
NpgsqlCommand dbCommand = new NpgsqlCommand("select jtext.text from " +
"(string join (select rootphrase.pid,lang from rootphrase where lang='de'" +
") as rp using(pid)) as jtext where jtext.text like '%" +
wort + "%';", conn);
NpgsqlDataReader dbReader = dbCommand.ExecuteReader();
while (dbReader.Read())
{
lst_deutsch.Items.Add(dbReader.GetValue(0).ToStrin g());
}
dbReader.Close();
foreach (String item in lst_deutsch.Items)
{
NpgsqlCommand dbCommand2 = new NpgsqlCommand("SELECT text FROM string WHERE pid IN(" +
"SELECT pid FROM rootphrase WHERE lang='en' AND rpid IN(" +
"SELECT rpid FROM rootphrase WHERE lang='de' AND pid IN(" +
"SELECT pid FROM string WHERE lower(text) LIKE '%" + item.ToLower() +
"%')) LIMIT 10)ORDER BY pid ASC;", conn);
NpgsqlDataReader dbReader2 = dbCommand2.ExecuteReader();
while (dbReader2.Read())
{
listBox_translate.Items.Add(dbReader2.GetValue(0). ToString());
}
dbReader2.Close();
}
}
catch (System.Exception fMeldung)
{
MessageBox.Show(fMeldung.Message);
}
finally
{
conn.Close();
}
}[/highlight]
ich habe ein Problem mit der Geschwindigt meines Programmes.
Ich lese aus einer pg Datenbank deutsche Sätze aus, zu denen ich dann noch zusätzlich die passende englische Übersetzung hole.
Durch meine Konstruktion ist das ganze ziemlich langsam geworden, zumal es bis zu 3000 Sätze sein können die ich in eine Listbox einlese.
Ich habe leider keinen Ansatz, was da wen ausbremst.
Hätte jemand eventuell ein paar Tips und Tricks das ganze etwas zu optimieren?
vielen dank im Vorraus,
nebul
[highlight=c#]
public void verbindung(string wort)
{
String dbConnString = "Server=localhost;Port=5432;Database=term;User Id=postgres;Password=test;Encoding=UNICODE";
NpgsqlConnection conn = new NpgsqlConnection(dbConnString);
try
{
conn.Open();
NpgsqlCommand dbCommand = new NpgsqlCommand("select jtext.text from " +
"(string join (select rootphrase.pid,lang from rootphrase where lang='de'" +
") as rp using(pid)) as jtext where jtext.text like '%" +
wort + "%';", conn);
NpgsqlDataReader dbReader = dbCommand.ExecuteReader();
while (dbReader.Read())
{
lst_deutsch.Items.Add(dbReader.GetValue(0).ToStrin g());
}
dbReader.Close();
foreach (String item in lst_deutsch.Items)
{
NpgsqlCommand dbCommand2 = new NpgsqlCommand("SELECT text FROM string WHERE pid IN(" +
"SELECT pid FROM rootphrase WHERE lang='en' AND rpid IN(" +
"SELECT rpid FROM rootphrase WHERE lang='de' AND pid IN(" +
"SELECT pid FROM string WHERE lower(text) LIKE '%" + item.ToLower() +
"%')) LIMIT 10)ORDER BY pid ASC;", conn);
NpgsqlDataReader dbReader2 = dbCommand2.ExecuteReader();
while (dbReader2.Read())
{
listBox_translate.Items.Add(dbReader2.GetValue(0). ToString());
}
dbReader2.Close();
}
}
catch (System.Exception fMeldung)
{
MessageBox.Show(fMeldung.Message);
}
finally
{
conn.Close();
}
}[/highlight]
Comment