Apache Derby - Derby-Indizes

Ein Index in einer Tabelle ist nichts anderes als ein Zeiger auf seine Daten. Diese werden verwendet, um das Abrufen von Daten aus einer Tabelle zu beschleunigen.

Wenn wir Indizes verwenden, werden die Anweisungen INSERT und UPDATE langsamer ausgeführt. Während SELECT und WHERE in kürzerer Zeit ausgeführt werden.

Index erstellen

Die Anweisung CREATE INDEX wird zum Erstellen eines neuen Index in einer Tabelle in der Derby-Datenbank verwendet.

Syntax

Es folgt die Syntax der Anweisung CREATE INDEX -

CTREATE INDEX index_name on table_name (column_name);

Beispiel

Angenommen, wir haben in Apache Derby eine Tabelle mit dem Namen "Mitarbeiter" erstellt (siehe unten).

CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   Phone_Number BIGINT
);

Die folgende SQL-Anweisung erstellt einen Index für die Spalte "Gehalt" in der Tabelle "Mitarbeiter".

ij> CREATE INDEX example_index on Emp (Salary);
0 rows inserted/updated/deleted

Erstellen eines EINZIGARTIGEN Index

In Apache Derby werden EINZIGARTIGE Indizes für die Datenintegration verwendet. Sobald Sie einen EINZIGARTIGEN Index für eine Spalte in einer Tabelle erstellt haben, sind keine doppelten Werte mehr zulässig.

Syntax

Im Folgenden finden Sie die Syntax zum Erstellen eines eindeutigen Index.

CREATE UNIQUE INDEX index_name on table_name (column_name);

Beispiel

Im folgenden Beispiel wird ein EINZIGARTIGER Index für die Spalten-ID der Tabelle Employee erstellt.

ij> CREATE UNIQUE INDEX unique_index on Emp (Phone_Number);
0 rows inserted/updated/deleted

Sobald Sie einen eindeutigen Index für eine Spalte erstellt haben, können Sie nicht mehr dieselben Werte für diese Spalte in eine andere Zeile eingeben. Kurz gesagt, eine Spalte mit einem UNIQE-Index lässt keine doppelten Werte zu.

Fügen Sie wie unten gezeigt eine Zeile in die Emp-Tabelle ein

ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Amit',
45000, 'Hyderabad', 9848022338);
1 row inserted/updated/deleted

Da wir einen eindeutigen Index für die Spalte Phone_No erstellt haben, wird ein Fehler angezeigt, wenn Sie denselben Wert wie im vorherigen Datensatz eingeben.

ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Sumit',
35000, 'Chennai', 9848022338);
ERROR 23505: The statement was aborted because it would have caused a duplicate
key value in a unique or primary key constraint or unique index identified by
'UNIQUE_INDEX' defined on 'EMP'.

Erstellen eines COMPOSITE-Index

Sie können einen einzelnen Index für zwei Zeilen erstellen, der als zusammengesetzter Index bezeichnet wird.

Syntax

Es folgt die Syntax des zusammengesetzten Index.

CREATE INDEX index_name on table_name (column_name1, column_name2);

Beispiel

Der folgende Index erstellt einen zusammengesetzten Index für die Spalten Name und Speicherort.

ij> CREATE INDEX composite_index on Emp (Name, Location);
0 rows inserted/updated/deleted

Anzeigen der Indizes

Die Abfrage SHOW INDEXES zeigt die Liste der Indizes für eine Tabelle an.

Syntax

Es folgt die Syntax der Anweisung SHOW INDEXES -

SHOW INDEXES FROM table_name;

Beispiel

Im folgenden Beispiel werden die Indizes in der Tabelle Mitarbeiter angezeigt.

ij> SHOW INDEXES FROM Emp;

Dies führt zu folgendem Ergebnis.

ij> SHOW INDEXES FROM Emp;
TABLE_NAME |COLUMN_NAME |NON_U&|TYPE|ASC&|CARDINA&|PAGES
----------------------------------------------------------------------------
EMP |PHONE_NUMBER |false |3 |A |NULL |NULL
EMP |NAME |true |3 |A |NULL |NULL
EMP |LOCATION |true |3 |A |NULL |NULL
EMP |SALARY |true |3 |A |NULL |NULL
4 rows selected

Indizes löschen

Die Drop Index-Anweisung löscht / löscht den angegebenen Index für eine Spalte.

Syntax

Es folgt die Syntax der DROP INDEX-Anweisung.

DROP INDEX index_name;

Beispiel

Das folgende Beispiel löscht einen Index, der oben erstellt wurde und den zusammengesetzten Index und den eindeutigen Index enthält.

ij> DROP INDEX composite_index;
0 rows inserted/updated/deleted
ij>Drop INDEX unique_index;
0 rows inserted/updated/deleted

Wenn Sie nun die Liste der Indizes überprüfen, sehen Sie den Index für eine Spalte, da wir die verbleibenden gelöscht haben.

ij> SHOW INDEXES FROM Emp;
TABLE_NAME |COLUMN_NAME |NON_U&|TYPE|ASC&|CARDINA&|PAGES
----------------------------------------------------------------------------
EMP |SALARY |true |3 |A |NULL |NULL
1 row selected

Behandeln von Indizes mit dem JDBC-Programm

Das folgende JDBC-Programm zeigt, wie Drop-Indizes für eine Spalte in einer Tabelle erstellt werden.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class IndexesExample {
   public static void main(String args[]) throws Exception {

      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:MYDATABASE;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating the Emp table
      String createQuery = "CREATE TABLE Emp( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "Phone_Number BIGINT )";
      stmt.execute(createQuery);
      System.out.println("Table created");
      System.out.println(" ");

      //Creating an Index on the column Salary
      stmt.execute("CREATE INDEX example_index on Emp (Salary)");
      System.out.println("Index example_index inserted");
      System.out.println(" ");

      //Creating an Unique index on the column Phone_Number
      stmt.execute("CREATE UNIQUE INDEX unique_index on Emp (Phone_Number)");
      System.out.println("Index unique_index inserted");
      System.out.println(" ");

      //Creating a Composite Index on the columns Name and Location
      stmt.execute("CREATE INDEX composite_index on Emp (Name, Location)");
      System.out.println("Index composite_index inserted");
      System.out.println(" ");

      //listing all the indexes
      System.out.println("Listing all the columns with indexes");

      //Dropping indexes
      System.out.println("Dropping indexes unique_index and, composite_index ");
      stmt.execute("Drop INDEX unique_index");
      stmt.execute("DROP INDEX composite_index");
   }
}

Ausgabe

Bei der Ausführung wird das folgende Ergebnis generiert

Table created
Index example_index inserted

Index unique_index inserted

Index composite_index inserted

Listing all the columns with indexes
Dropping indexes unique_index and, composite_index