Misalkan gw punya tiga tabel di database yang mana ketiga database tersebut saling berhubungan , yaitu Tabel Mahasiswa , MataKuliah, dan Mahasiswa_MataKuliah .
Tabel Mahasiswa terdiri dari dua kolom , yaitu : ID_Mahasiswa dan Nama_Mahasiswa. Tabel MataKuliah terdiri dari dua kolom, yaitu ID_MataKuliah dan Nama_MataKuliah. Dan terakhir tabel Mahasiswa_MataKuliah yang terdiri dari ID_Mahasiswa dan ID_MataKuliah. Tabel terakhir menunjukkan hubungan antara Mahasiswa dan MataKuliah yang bersifat many to many, dimana satu mahasiswa bisa memiliki banyak mata kuliah dan begitu juga sebaliknya.
Proses Pertama : INSERT .
Anggap semua terjadi dalam satu proses sekaligus.
Cara primitif
:
<?php // INSERT Mahasiswa $sql_mahasiswa = mysql_query("INSERT INTO Mahasiswa VALUES (NULL, '".$Nama_Mahasiswa."')") ; // INSERT MataKuliah $sql_matakuliah = mysql_query("INSERT INTO Mahasiswa VALUES (NULL, '".$Nama_MataKuliah."')") ; // Ambil ID Mahasiswa yang baru dimasukkan $sql_id_mahasiswa = mysql_query("SELECT ID_Mahasiswa FROM Mahasiswa ORDER BY ID_Mahasiswa DESC LIMIT 1") ; $rs_id_mahasiswa = mysql_fetch_array($sql_id_mahasiswa) ; // dan bla... bla.. sehingga $ID_Mahasiswa = $rs_id_mahasiswa['ID_Mahasiswa'] ; // Ambil ID MataKuliah yang baru dimasukkan $sql_id_matakuliah = mysql_query("SELECT ID_MataKuliah FROM MataKuliah ORDER BY ID_MataKuliah DESC LIMIT 1") ; $rs_id_matakuliah = mysql_fetch_array($sql_id_matakuliah) ; // dan bla... bla.. sehingga $ID_MataKuliah = $rs_id_matakuliah['ID_MataKuliah'] ; // Sehingga tinggal dimasukkan ke Tabel Mahasiswa_MataKuliah $sql_mahasiswa_matakuliah = mysql_query("INSERT INTO Mahasiswa_MataKuliah VALUES ('".$ID_Mahasiswa."','".$ID_MataKuliah."')") ; ?>
Cara optimasasi :
<?php // INSERT Mahasiswa $sql_mahasiswa = mysql_query("INSERT INTO Mahasiswa VALUES (NULL, '".$Nama_Mahasiswa."')") ; // INSERT MataKuliah $sql_matakuliah = mysql_query("INSERT INTO Mahasiswa VALUES (NULL, '".$Nama_MataKuliah."')") ; // Langsung dimasukkan ke tabel Mahasiswa_MataKuliah $sql_mahasiswa_matakuliah = mysql_query("INSERT INTO Mahasiswa_Matakuliah SELECT (SELECT ID_Mahasiswa FROM Mahasiswa ORDER BY ID_Mahasiswa DESC LIMIT 1), (SELECT ID_MataKuliah FROM MataKuliah ORDER BY ID_MataKuliah DESC LIMIT 1) ") ; // ATAU .... ? ?>
Proses Kedua : READ
<?php // Proses read dengan mengambil seluruh mahasiswa berikut mata kuliah yang diambilnya $sql = mysql_query(" SELECT Nama_Mahasiswa, Nama_MataKuliah FROM Mahasiswa M, MataKuliah MK, Mahasiswa_MataKuliah MM WHERE MM.ID_Mahasiswa = M.ID_Mahasiswa AND MM.ID_MataKuliah= MK.ID_Mahasiswa ") ; // Proses read dengan megambil beberapa mahasiswa ($limit) berikut mata kuliah yang diambilnya // $limit = batasan yang ditampilkan // $start = mulai dari baris berapa ditampilkan $sql = mysql_query(" SELECT Nama_Mahasiswa, Nama_MataKuliah FROM (SELECT ID_Mahasiswa, Nama_Mahasiswa FROM Mahasiswa LIMIT ".$start.",".$limit.") M, MataKuliah MK, Mahasiswa_MataKuliah MM WHERE MM.ID_Mahasiswa = M.ID_Mahasiswa AND MM.ID_MataKuliah= MK.ID_Mahasiswa ") ; ?>
Semoga bermanfaat . Good Luck.


itu yang insert optimasi secara performance atau secara line of code bos :p
hmm aq fikir itu bukan teknik optimasi query
coba lakukan perintah
Explain “query”
dari situ keliatan execution plan dari query mu. dari situ bisa kamu reverse ke tree plan nya.. dari tree plan itu kamu bisa mengetahui proses mana yang membuat query ini bermasalah.
Boleh juga….mas biar tampilan comentnya kaya gini gimana??
hadoh…apa nih???