F
Flixius
Fortgeschrittenes Mitglied
- 4
Hallo liebe Gemeinde!
wenn ich in meine SqliteDB in der App Datensätze inserte, dann dauert es "extrem" lange. Insgesamt habe ich 2200 Datensätze und dafür brauche ich auf dem Nexus S im Release Build 90-120 Sekunden.
Das Objekt hat 19 Propertys wovon die meisten int sind. Ein paar Strings sind auch dabei, aber sie sind noch viel länger als 50 Zeichen. Ob ich in der SqliteDB den Datentyp text oder nvarchar angebe hat keine Aufwirkung auf die Performance.
Pro Datensatz wird ein ganz einfaches insert ohne joins oder ähnlichen Aktionen gemacht. Die Tabelle hat ein Int als PK.
Ich kann mir nicht vorstellen, dass solch eine schlechte Performance normal ist, denn 2200 Datensätze sind ja nun wirklich nicht besonders viel.
Hier ein Codesnippet des Teils, der so lange dauert:
Die Klasse PlayerDao:
SqliteHelper:
Ich hoffe jemand kann mir helfen. Mein gesamtes App Konzept ist jetzt kurz vor Fertigstellung dadurch auf den Kopf gestellt worden, da es die gesamte Abruflogik über den Haufen wirft. Alles über 10 Sekunden wird problematisch denke ich. Das Nexus S ist zwar nicht gerade das schnellste Handy, aber wenn ich mir überlege, dass die App auch auf 2.1 läuft, wird mir ganz anders zumute.
wenn ich in meine SqliteDB in der App Datensätze inserte, dann dauert es "extrem" lange. Insgesamt habe ich 2200 Datensätze und dafür brauche ich auf dem Nexus S im Release Build 90-120 Sekunden.
Das Objekt hat 19 Propertys wovon die meisten int sind. Ein paar Strings sind auch dabei, aber sie sind noch viel länger als 50 Zeichen. Ob ich in der SqliteDB den Datentyp text oder nvarchar angebe hat keine Aufwirkung auf die Performance.
Pro Datensatz wird ein ganz einfaches insert ohne joins oder ähnlichen Aktionen gemacht. Die Tabelle hat ein Int als PK.
Ich kann mir nicht vorstellen, dass solch eine schlechte Performance normal ist, denn 2200 Datensätze sind ja nun wirklich nicht besonders viel.
Hier ein Codesnippet des Teils, der so lange dauert:
Code:
PlayerDAO playerDao = new PlayerDAO(ctx);
playerDao.open();
for(Player p : players)
playerDao.InsertNewPlayer(p);
playerDao.close();
Die Klasse PlayerDao:
Code:
public class PlayerDAO {
private SQLiteDatabase database;
private MySQLiteHelper dbHelper;
public PlayerDAO(Context context) {
dbHelper = new MySQLiteHelper(context);
}
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}
public void InsertNewPlayer(Player p) {
database.insert(MySQLiteHelper.TABLE_Player, null,p.GetContentValuesForSqlite());
}
}
SqliteHelper:
Code:
public class MySQLiteHelper extends SQLiteOpenHelper {
public MySQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//etc..
}
Ich hoffe jemand kann mir helfen. Mein gesamtes App Konzept ist jetzt kurz vor Fertigstellung dadurch auf den Kopf gestellt worden, da es die gesamte Abruflogik über den Haufen wirft. Alles über 10 Sekunden wird problematisch denke ich. Das Nexus S ist zwar nicht gerade das schnellste Handy, aber wenn ich mir überlege, dass die App auch auf 2.1 läuft, wird mir ganz anders zumute.
