Apache Derby - Derbi Dizinleri

Bir tablodaki bir indeks, verilerine göstericiden başka bir şey değildir. Bunlar, bir tablodan veri alımını hızlandırmak için kullanılır.

İndeksleri kullanırsak, INSERT ve UPDATE komutları daha yavaş bir aşamada çalıştırılır. Oysa SELECT ve WHERE daha kısa sürede çalıştırılır.

Bir Dizin Oluşturma

CREATE INDEX deyimi, Derby veritabanındaki bir tabloda yeni bir Dizin oluşturmak için kullanılır.

Sözdizimi

CREATE INDEX ifadesinin sözdizimi aşağıdadır -

CTREATE INDEX index_name on table_name (column_name);

Misal

Aşağıda gösterildiği gibi Apache Derby'de Çalışanlar adlı bir tablo oluşturduğumuzu varsayalım.

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

Aşağıdaki SQL deyimi, Çalışanlar tablosundaki Salary adlı sütunda bir dizin oluşturur.

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

EŞSİZ bir dizin oluşturma

Apache Derby'de veri entegrasyonu için UNIQUE dizinler kullanılır. Tablodaki bir sütunda UNIQUE indeks oluşturduğunuzda, yinelenen değerlere izin vermez.

Sözdizimi

Aşağıda benzersiz bir dizin oluşturmanın sözdizimi verilmiştir.

CREATE UNIQUE INDEX index_name on table_name (column_name);

Misal

Aşağıdaki örnek, Employee tablosunun sütun Id'sinde bir UNIQUE indeksi oluşturur.

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

Bir sütunda benzersiz bir dizin oluşturduğunuzda, o sütun için başka bir satıra aynı değerleri giremezsiniz. Kısacası, UNIQE indeksi olan bir sütun, yinelenen değerlere izin vermeyecektir.

Emp tablosuna aşağıda gösterildiği gibi bir satır ekleyin

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

Telefon_Numarası sütununda benzersiz bir dizin oluşturduğumuz için, önceki kayıttaki ile aynı değeri girerseniz, bir hata gösterir.

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'.

COMPOSITE indeksi oluşturma

İki satırda tek bir dizin oluşturabilirsiniz ve buna Bileşik dizin adı verilir.

Sözdizimi

Aşağıda, bileşik dizinin sözdizimi verilmiştir.

CREATE INDEX index_name on table_name (column_name1, column_name2);

Misal

Aşağıdaki dizin, Ad ve Konum sütunlarında bileşik bir dizin oluşturur.

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

Dizinlerin Görüntülenmesi

DİZİNLERİ GÖSTER sorgusu, bir tablodaki dizinlerin listesini görüntüler.

Sözdizimi

SHOW INDEXES ifadesinin sözdizimi aşağıdadır -

SHOW INDEXES FROM table_name;

Misal

Aşağıdaki örnek, indeksleri Çalışanlar tablosunda görüntüler.

ij> SHOW INDEXES FROM Emp;

Bu, aşağıdaki sonucu verir.

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

Dizinleri düşürme

Drop Index deyimi, belirtilen dizini bir sütunda siler / bırakır.

Sözdizimi

DROP INDEX ifadesinin sözdizimi aşağıdadır.

DROP INDEX index_name;

Misal

Aşağıdaki örnek, yukarıda oluşturulan composite_index ve unique_index adlı bir dizini bırakır.

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

Şimdi, dizin listesini doğrularsanız, kalanını sildiğimiz için bir sütunda dizini görebilirsiniz.

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

Dizinleri JDBC programını kullanarak işleme

Aşağıdaki JDBC programı, bir tablodaki bir sütunda bırakma dizinlerinin nasıl oluşturulacağını gösterir.

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");
   }
}

Çıktı

Yürütüldüğünde, bu aşağıdaki sonucu verir

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