Teradata - JOIN Index

JOIN INDEX adalah tampilan yang terwujud. Definisinya disimpan secara permanen dan data diperbarui setiap kali tabel dasar yang dirujuk dalam indeks gabungan diperbarui. INDEKS GABUNG mungkin berisi satu atau beberapa tabel dan juga berisi data yang telah digabungkan sebelumnya. Indeks gabungan terutama digunakan untuk meningkatkan kinerja.

Ada berbagai jenis indeks gabungan yang tersedia.

  • Indeks Gabungan Tabel Tunggal (STJI)
  • Multi Table Join Index (MTJI)
  • Indeks Gabungan Gabungan (AJI)

Indeks Gabungan Tabel Tunggal

Indeks Gabungan Tabel Tunggal memungkinkan untuk mempartisi tabel besar berdasarkan kolom indeks utama yang berbeda dari yang dari tabel dasar.

Sintaksis

Berikut ini adalah sintaks dari JOIN INDEX.

CREATE JOIN INDEX <index name> 
AS 
<SELECT Query> 
<Index Definition>;

Contoh

Pertimbangkan tabel Karyawan dan Gaji berikut.

CREATE SET TABLE EMPLOYEE,FALLBACK ( 
   EmployeeNo INTEGER, 
   FirstName VARCHAR(30) , 
   LastName VARCHAR(30) , 
   DOB DATE FORMAT 'YYYY-MM-DD', 
   JoinedDate DATE FORMAT 'YYYY-MM-DD', 
   DepartmentNo BYTEINT 
) 
UNIQUE PRIMARY INDEX ( EmployeeNo );

CREATE SET TABLE SALARY,FALLBACK ( 
   EmployeeNo INTEGER, 
   Gross INTEGER, 
   Deduction INTEGER, 
   NetPay INTEGER 
) 
PRIMARY INDEX ( EmployeeNo ) 
UNIQUE INDEX (EmployeeNo);

Berikut adalah contoh yang membuat indeks Gabung bernama Employee_JI pada tabel Karyawan.

CREATE JOIN INDEX Employee_JI 
AS 
SELECT EmployeeNo,FirstName,LastName, 
BirthDate,JoinedDate,DepartmentNo 
FROM Employee 
PRIMARY INDEX(FirstName);

Jika pengguna mengirimkan kueri dengan klausa WHERE di EmployeeNo, sistem akan meminta tabel Karyawan menggunakan indeks utama yang unik. Jika pengguna menanyakan tabel karyawan menggunakan nama_karyawan, sistem dapat mengakses indeks gabungan Employee_JI menggunakan nama_karyawan. Baris indeks gabungan di-hash di kolom nama_karyawan. Jika indeks gabungan tidak ditentukan dan nama_karyawan tidak ditentukan sebagai indeks sekunder, maka sistem akan melakukan pemindaian tabel lengkap untuk mengakses baris yang memakan waktu.

Anda dapat menjalankan rencana JELASKAN berikut dan memverifikasi rencana pengoptimal. Dalam contoh berikut, Anda dapat melihat bahwa pengoptimal menggunakan Indeks Gabungan daripada tabel Karyawan dasar saat kueri tabel menggunakan kolom Nama_Nama Kerja.

EXPLAIN SELECT * FROM EMPLOYEE WHERE FirstName='Mike'; 
*** Help information returned. 8 rows. 
*** Total elapsed time was 1 second. 
Explanation 
------------------------------------------------------------------------ 
   1) First, we do a single-AMP RETRIEVE step from EMPLOYEE_JI by 
      way of the primary index "EMPLOYEE_JI.FirstName = 'Mike'" 
      with no residual conditions into Spool 1 (one-amp), which is built 
      locally on that AMP.  The size of Spool 1 is estimated with low 
      confidence to be 2 rows (232 bytes).  The estimated time for this 
      step is 0.02 seconds.
   → The contents of Spool 1 are sent back to the user as the result of 
      statement 1.  The total estimated time is 0.02 seconds.

Indeks Gabungan Multi Tabel

Indeks gabungan multi-tabel dibuat dengan menggabungkan lebih dari satu tabel. Indeks gabungan multi-tabel dapat digunakan untuk menyimpan kumpulan hasil dari tabel yang sering digabungkan untuk meningkatkan kinerja.

Contoh

Contoh berikut membuat JOIN INDEX bernama Employee_Salary_JI dengan menggabungkan tabel Employee dan Gaji.

CREATE JOIN INDEX Employee_Salary_JI 
AS 
SELECT a.EmployeeNo,a.FirstName,a.LastName, 
a.BirthDate,a.JoinedDate,a.DepartmentNo,b.Gross,b.Deduction,b.NetPay 
FROM Employee a 
INNER JOIN Salary b 
ON(a.EmployeeNo = b.EmployeeNo) 
PRIMARY INDEX(FirstName);

Setiap kali tabel dasar Karyawan atau Gaji diperbarui, maka indeks Gabung Employee_Salary_JI juga otomatis diperbarui. Jika Anda menjalankan kueri yang bergabung dengan tabel Karyawan dan Gaji, maka pengoptimal dapat memilih untuk mengakses data dari Employee_Salary_JI secara langsung daripada bergabung dengan tabel. JELASKAN rencana pada kueri dapat digunakan untuk memverifikasi apakah pengoptimal akan memilih tabel dasar atau Bergabung dengan indeks.

Indeks Gabungan Gabungan

Jika tabel secara konsisten digabungkan pada kolom tertentu, maka indeks gabungan gabungan dapat ditentukan pada tabel untuk meningkatkan kinerja. Salah satu batasan indeks gabungan agregat adalah bahwa ia hanya mendukung fungsi SUM dan COUNT.

Contoh

Dalam contoh berikut, Karyawan dan Gaji digabungkan untuk mengidentifikasi gaji total per Departemen.

CREATE JOIN INDEX Employee_Salary_JI 
AS 
SELECT a.DepartmentNo,SUM(b.NetPay) AS TotalPay 
FROM Employee a 
INNER JOIN Salary b 
ON(a.EmployeeNo = b.EmployeeNo)
GROUP BY a.DepartmentNo 
Primary Index(DepartmentNo);