CREATE TABLE Statement nur ein Index ?

E

enrem

Erfahrenes Mitglied
Threadstarter
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.
 
J

jogimuc

Erfahrenes Mitglied
enrem schrieb:
Ist das richitg, dass sich im CREATE TABLE Statement nur ein PRIMARY KEY Index erstellen lässt?
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:
E

enrem

Erfahrenes Mitglied
Threadstarter
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)"
 
J

jogimuc

Erfahrenes Mitglied
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
 
E

enrem

Erfahrenes Mitglied
Threadstarter
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.
 
Oben Unten