Temporary Tabel di MySQL
Menangani database Sistem Informasi Akademik kepunyaan UAD
(Universitas Ahmad Dahlan). Jumlah tabel dalam SIA tersebut adalah 198 tabel. Banyak sih.
Nah, saya punya pengalaman nih, ketika di suruh membuat query untuk menampilkan daftar profil mahasiswa berdasarkan periode yudisium.
Nah, di query tersebut, saya harus menampilkan lama (dalam satuan
semester) mahasiswa mengambil Tugas akhir. Nah, ketika itu saya bingung karena tidak ada field yang benar2 bisa dipakai dalam perhitungan itu. yang ada cuma field idSemesterMulai dan
IdSemesterSelesai. Dengan asumsi Id tersebut tidak pasti.
akhirnya saya buat tabel temporary untuk tujuan tersebut. querynya seperti ini:
#create tabel temporary semester mulai
dulu
CREATE TEMPORARY TABLE `temp_semester_mulai` (
`tempId` bigint(20) NOT NULL
auto_increment,
`tempSempId` bigint(20) default NULL,
`tempSemId` bigint(20) default NULL,
PRIMARY KEY (`tempId`)
)
;
#create tabel temporary semester selesai dulu
CREATE TEMPORARY TABLE `temp_semester_selesai` (
`tempId` bigint(20) NOT NULL auto_increment,
`tempSempId`
bigint(20) default NULL,
`tempSemId` bigint(20) default NULL,
PRIMARY KEY (`tempId`)
) ;
#isi data ke tabel temp semester mulai
INSERT INTO
temp_semester_mulai(tempSempId,tempSemId)
SELECT sempId,
sempSemId
FROM
(
SELECT
sempId,
sempSemId
FROM s_semester_prodi
LEFT JOIN s_semester ON
sempSemId = semId
LEFT JOIN s_nama_semester_ref ON semNmsemrId = nmsemrId
WHERE
nmsemrJenis=&petik&R&petik&
ORDER BY sempProdiKode, semTahun, nmsemrUrutan
) AS
TABEL_MULAI;
#insert ke tabel semester selesai
INSERT INTO
temp_semester_selesai(tempSempId,tempSemId)
SELECT tempSempId,tempSemId FROM temp_semester_mulai
ORDER BY tempId;
#tampilkan datanya
SELECT
mhsNiu AS NIM,
mhsNama AS NAMA,
prodiNamaResmi
AS PRODI,
mhsIpkTranskrip AS IPK,
IFNULL(mhsLamaStudiSemester,&petik&TIDAK ADA DATA&petik&) AS
LAMA_STUDI_SEMESTER,
IFNULL(mhsLamaStudiBulan,&petik&TIDAK ADA DATA&petik&) AS LAMA_STUDI_BULAN,
IFNULL((ss.tempId+1-sm.tempId),&petik&TIDAK ADA DATA&petik&) AS
LAMA_TA_SEMESTER,
IFNULL(MONTH(taTanggalUjian)-MONTH(taTanggalMulai),&petik&TIDAK ADA DATA&petik&)
AS LAMA_TA_BULAN,
prlsrNama AS PREDIKAT
FROM s_yudisium
LEFT JOIN mahasiswa
ON
ydsMhsNiu=mhsNiu
LEFT JOIN program_studi
ON mhsProdiKode=prodiKode
LEFT JOIN s_tugas_akhir
ON
taMhsNiu=mhsNiu
LEFT JOIN s_predikat_lulus_ref
ON prlsrId=mhsPrlsrId
LEFT JOIN
temp_semester_mulai sm
ON sm.tempSempId=taSempIdMulai
LEFT JOIN temp_semester_selesai ss
ON
ss.tempSempId=taSempIdSelesai
WHERE ydsYdssesiId=70
AND prodiKode IN(45,46,47)
ORDER BY
mhsNiu,mhsNama;
apa itu tabel temporary
Tabel temporary adalah tabel yang dibuat
oleh DBMS yang bersifat sementara sehingga tidak memerlukan ruang penyimpanan yang berarti.
tabel temporary, ketika di create, akan disimpan di folder temporary dari windows, misalnya
C:\Windows\Temp
tabel ini akan terdefinisi di folder tersebut dengan nama #sql3fc_x_x.frm,
x adalah suatu angka yang didefinisikan oleh DBMS. jadi kita tidak perlu pusing2 dengan angka
tersebut ya. nah, jika ada 10 koneksi yang berbeda, maka jika masing2 koneksi dibuat tabel
temporary, maka akan ada 10 definisi tabel temporary di folder temp. setiap definisi memiliki angka
x yang berbeda dan digunakan untuk membedakan setiap koneksi. ini sudah otomatis.
jika koneksi
diputus, maka definisi tabel temporary tersebut akan terhapus pula dan dan memory yang pernah
dipakai akan dibebaskan kembali.
kapan memakai tabel temporary?
inilah inti dari
pembahasan tabel temporary. tabel temporary dipakai
1.apabila tabel2 yang sudah ada dalam database
tidak bisa dipakai untuk melakukan suatu operasi select tertentu. tabel temporary dibuat untuk
membantu operasi tersebut.
2.kita memerlukan tabel “sementara” yang tidak memakan ruang
penyimpanan