Laden...

Langsame Select-Abfrage unter SQLite

Erstellt von progi123 vor 15 Jahren Letzter Beitrag vor 15 Jahren 751 Views
progi123 Themenstarter:in
71 Beiträge seit 2008
vor 15 Jahren
Langsame Select-Abfrage unter SQLite

hallo,

wegen schlechter performance bei einer software die mit access arbeit, habe ich mich dazu entschieden auf sqlite umzusteigen. der vorteil ist, dass das importieren der daten bis zu 100 mal schneller geht. der nachteil: die sql-abfragen brauchen mehr zeit.
eine dieser abfragen sieht so aus:

SQLiteConnection conn = new SQLiteConnection("Data Source=c:\\Database.db;Version=3;New=True;Compress=True;UTF8Encoding=True;");
DataView dv1 = null;

SQLiteDataAdapter da1 = new SQLiteDataAdapter(
"SELECT game.bigblind AS [Limit], COUNT(*) AS [Total Hands], 
SUM(poker.wonlost) AS [Amount Won $], 
SUM(poker.wonlost) / (game.bigblind * 2) / COUNT(*) * 100 AS [BB/100 Hands],
SUM(poker.rake) AS [Rake $], 
SUM(poker.putmoney) * 100 / COUNT(*) AS [Voluntarily Put $ In The Pot %], 
SUM(poker.praise) * 100 / COUNT(*) AS [Preflop Raise %], 
SUM(poker.wentsd) * 100 / SUM(poker.sawflop) AS [Went To Showdown %], 
SUM(poker.wonsd) * 100 / SUM(poker.wentsd) AS [Won At Showdown %], 
SUM(poker.riverraw) / (SUM(poker.riverraw) + SUM(poker.rivercaw)) * 100 AS [River Raise If Won At Showdown %] 
FROM player INNER JOIN poker ON player.playerid = poker.playerid INNER JOIN game ON poker.gameid = game.gameid 
WHERE (player.player = 'POKERPLAYER') 
GROUP BY game.bigblind ORDER BY 1", conn);

DataTable dt1 = new DataTable("playerinfo1");

conn.Open();
da1.Fill(dt1);
conn.Close();

dv1 = dt1.DefaultView;
dataGridView1.DataSource = dv1;

diese abfrage hat bei access 10 sekunden gebraucht und bei sqlite 40 sekunden. habe ich etwas falsch gemacht oder ist sqlite dazu einfach nicht geeignet?

progi123 Themenstarter:in
71 Beiträge seit 2008
vor 15 Jahren

mittlerweile ist das problem erkannt und behoben. ich hab vergessen die primärschlüssel zu definieren. 👅