Apache Derby - Indeks Derby
Indeks dalam tabel tidak lain adalah penunjuk ke datanya. Ini digunakan untuk mempercepat pengambilan data dari tabel.
Jika kita menggunakan indeks, pernyataan INSERT dan UPDATE dieksekusi dalam fase yang lebih lambat. Sedangkan SELECT dan WHERE dieksekusi dalam waktu yang lebih singkat.
Membuat Indeks
Pernyataan CREATE INDEX digunakan untuk membuat Indeks baru dalam tabel di database Derby.
Sintaksis
Berikut ini adalah sintaks dari pernyataan CREATE INDEX -
CTREATE INDEX index_name on table_name (column_name);
Contoh
Misalkan kita telah membuat tabel bernama Employees in Apache Derby seperti yang ditunjukkan di bawah ini.
CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
Name VARCHAR(255),
Salary INT NOT NULL,
Location VARCHAR(255),
Phone_Number BIGINT
);
Pernyataan SQL berikut membuat indeks pada kolom bernama Gaji di tabel Karyawan.
ij> CREATE INDEX example_index on Emp (Salary);
0 rows inserted/updated/deleted
Membuat indeks UNIK
Di Apache Derby, indeks UNIQUE digunakan untuk integrasi data. Setelah Anda membuat indeks UNIK pada kolom dalam tabel, itu tidak memungkinkan nilai duplikat.
Sintaksis
Berikut ini adalah sintaks untuk membuat indeks unik.
CREATE UNIQUE INDEX index_name on table_name (column_name);
Contoh
Contoh berikut membuat indeks UNIK pada kolom Id tabel Karyawan.
ij> CREATE UNIQUE INDEX unique_index on Emp (Phone_Number);
0 rows inserted/updated/deleted
Setelah Anda membuat indeks unik pada kolom, Anda tidak dapat memasukkan nilai yang sama untuk kolom itu di baris lain. Singkatnya, kolom yang memiliki indeks UNIQE tidak akan mengizinkan nilai duplikat.
Sisipkan baris dalam tabel Emp seperti yang ditunjukkan di bawah ini
ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Amit',
45000, 'Hyderabad', 9848022338);
1 row inserted/updated/deleted
Karena kita telah membuat indeks unik pada kolom Phone_No, jika Anda ingin memasukkan nilai yang sama seperti pada catatan sebelumnya, ini menunjukkan kesalahan.
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'.
Membuat indeks KOMPOSIT
Anda dapat membuat indeks tunggal pada dua baris dan itu disebut Indeks komposit.
Sintaksis
Berikut ini adalah sintaks dari indeks komposit.
CREATE INDEX index_name on table_name (column_name1, column_name2);
Contoh
Indeks berikut membuat indeks komposit pada kolom Nama dan Lokasi.
ij> CREATE INDEX composite_index on Emp (Name, Location);
0 rows inserted/updated/deleted
Menampilkan Indeks
Kueri SHOW INDEXES menampilkan daftar indeks pada tabel.
Sintaksis
Berikut ini adalah sintaks dari pernyataan SHOW INDEXES -
SHOW INDEXES FROM table_name;
Contoh
Contoh berikut, saya menampilkan indeks pada tabel Karyawan.
ij> SHOW INDEXES FROM Emp;
Ini menghasilkan hasil sebagai berikut.
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
Penurunan Indeks
Pernyataan Drop Index menghapus / menjatuhkan indeks yang diberikan pada kolom.
Sintaksis
Berikut ini adalah sintaks dari pernyataan DROP INDEX.
DROP INDEX index_name;
Contoh
Contoh berikut menjatuhkan indeks bernama composite_index dan unique_index yang dibuat di atas.
ij> DROP INDEX composite_index;
0 rows inserted/updated/deleted
ij>Drop INDEX unique_index;
0 rows inserted/updated/deleted
Sekarang, jika Anda memverifikasi daftar indeks, Anda dapat melihat indeks pada satu kolom karena kami telah menghapus sisanya.
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
Menangani Indeks menggunakan program JDBC
Mengikuti program JDBC mendemonstrasikan cara membuat indeks drop pada kolom dalam tabel.
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");
}
}
Keluaran
Saat menjalankan, ini menghasilkan hasil sebagai berikut
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