1. enrem, 20.02.2019 #1
    enrem

    enrem Threadstarter Erfahrener Benutzer

    Ist das richitg, dass sich im CREATE TABLE Statement nur ein PRIMARY KEY Index erstellen lässt?

    Müssen alle weiteren Indices entsprechend in weiteren Anfragen nach der Erstellung der Tabelle angelegt werden?

    private static final String _CREATE =
    "CREATE TABLE ["+ NAME +"] ("
    + "["+Col._ID+"] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
    + "["+Col.UUID+"] TEXT UNIQUE NOT NULL,"
    + "["+Col.DATUMUPDATE +"] TEXT NOT NULL,"
    + "["+Col.NAME+"] TEXT NOT NULL,"
    + "["+Col.BESCHREIBUNG+"] TEXT)";

    Müsste ich in diesem Fall für die uuid eine separate Indizierung durchführen?

    "CREATE UNIQUE INDEX index_uuid_tabellenname on tabellenname (uuid)"

    Vorab besten Dank.
     
  2. jogimuc, 21.02.2019 #2
    jogimuc

    jogimuc Erfahrener Benutzer

    ja das ist richtig pro Tabelle gibt es nur einen Primary. das sagt ja schon der Name Primary das es nur einen geben kann. Ist auch in anderen db so.

    Ein Primery ist Automatisch auch ein Index, und ein Index ist nur ein Index. Der Dient dazu das suchen in der Tabellen Spalte zu beschleunigen. Dazu legt sich die DB intern eine Tabelle an die sortirt ist und verweise zu deiner Tabelle hat.
    Es macht im allgemeinen aber keinen Sinn für alle Tabellenspalten einen Index zu erstellen dadurch wir die DB erstens viel grösser und es kann sich auch nachteilig auf die Geschwindigkeit auswirken. Wenn du zb 30 Spalten hast und auf alle einen Index setz ist das nicht gut. Denn die DB muss die Indexe auch bei jeder Änderungn neu Berechnen
    Überleg dir wo du wirklich einen Index brauchst.
     
    Zuletzt bearbeitet: 21.02.2019
  3. enrem, 21.02.2019 #3
    enrem

    enrem Threadstarter Erfahrener Benutzer

    Ich habe mich da schlampig ausgedrückt. Sorry!

    Beispiel:

    Ich habe eine Kundentabelle mit den Spalten _id und uuid.

    SQL:

    "CREATE TABLE Kunde ( _id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, uuid TEXT UNIQUE NOT NULL)"

    Duch den Primary Key ist die _id autom. indiziert. Ist die Spalte uuid durch den unique ebenfalls autom. indiziert oder muss ich den Index nach dem erstellen der Tabelle separat durchführen.

    SQL:

    "CREATE UNIQUE INDEX index_kunde_uuid on Kunde (uuid)"
     
  4. jogimuc, 21.02.2019 #4
    jogimuc

    jogimuc Erfahrener Benutzer

    Normalerweise wird nur für den primär ein Index gemacht. Wenn du für die uuid suchen en willst etweder bein einrichten der Tabelle mit angeben. Oder extra einrichten. Schaue noch mal in die Doku zu sql
     
    enrem bedankt sich.
  5. enrem, 24.02.2019 #5
    enrem

    enrem Threadstarter Erfahrener Benutzer

    Wenn ich alles richtig verstanden habe, wird lediglich für den PRIMARY KEY ein Index angelegt. Alle anderen müssen separat eingerichtet werden. Ich werde das dann so umsetzen.
     
Du betrachtest das Thema "CREATE TABLE Statement nur ein Index ?" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.