sqlite performance Probleme bei update

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • sqlite performance Probleme bei update

      Hi,

      ich habe für eine App (schon mehr als 1 Jahr im Appstore) eine kleine Datenbank mit zwei Tabellen:

      Quellcode

      1. ​CREATE TABLE "SM_Kopf" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT, "Bezeichnung" TEXT, "Zeilen" INTEGER, "Spalten" INTEGER, "Datum" DATE)
      2. CREATE TABLE "SM_Cell" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT, "ID_Kopf" INTEGER, "Symbol" TEXT, "Color" TEXT, "Koordinate" TEXT)


      auf der Tabelle SM_Cell habe ich zwei Indexe:

      Quellcode

      1. ​CREATE INDEX "cell_koordinate" ON "SM_Cell" ("Koordinate")
      2. CREATE INDEX "cell_kopf" ON "SM_Cell" ("ID_Kopf")


      In der Datenbank werden Charts abgelegt. Die können bis auf 50x50 groß sein
      Jede Zelle hat eine Koordinate, Farbe und Symbol

      Es gibt Aktivitäten vom Anwender, bei der das gesamte Chart geändert werden kann.

      Das heisst dann konkret über alle Zeilen mal Spalten laufen und ein update in der Datenbank ausführen.

      Das mache ich damit:

      Quellcode

      1. ​-(void)updateCellDB:(NSString *)index withSymbol:(NSString *)symbol withColor: (NSString *)color withKopfID:(int)kopfID
      2. {
      3. NSString *sqlQuery = [NSString stringWithFormat:@"UPDATE SM_Cell SET Symbol = '%@', Color = '%@' WHERE ID_Kopf LIKE %d AND Koordinate LIKE '%@';", symbol, color, kopfID, index];
      4. const char *sql = [sqlQuery UTF8String];
      5. sql = [sqlQuery UTF8String];
      6. if (sqlite3_prepare_v2(database, sql, -1, &statement, nil) == SQLITE_OK)
      7. {
      8. sqlite3_step(statement);
      9. sqlite3_finalize(statement);
      10. }
      11. }
      Alles anzeigen


      Ein Chart neu anlegen mit Standardsymbol und Standardfarbe mittels "Insert" ist schnell (wenige Sekunden)

      Das update der selben Chartgröße dauert viele MINUTEN (bei einer Datenbank mit ca 150 Charts und ca 90.000 Zellen) ?(

      Hat jemand einen Tip für mich, wie ich den Code optimieren kann, ohne die App quasi neu zu schreiben?
      Ich habe auch keine Loesung, aber ich bewundere das Problem!
      _____________________________________________________


      Hape42