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