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