Professional Documents
Culture Documents
Data: X, Y, Z=2X 10 + 3X 9 Y + 4X 8 Y 2 + 5X 7 Y 3 + 6X 6 Y 4 + 7X 5 Y 5 + 6X 4 Y 6 + 5X 3 Y 7 + 4X 2 Y 8 + 3XY 9 + 2Y 10 1. Buat tabel XYZ1 dengan data berikut: TIPE NUMBER NUMBER NUMBER PANJANG NULLITY KETERANGAN NOT NULL PK NOT NULL NOT NULL
KOLOM ID X Y
CREATE TABLE XYZ1 ( ID NUMBER NOT NULL, X NUMBER NOT NULL, Y NUMBER NOT NULL, CONSTRAINT XYZ1_PK PRIMARY KEY (ID) );
2.
BEGIN FOR I IN 1 .. 999999 LOOP INSERT INTO XYZ1 VALUES(I,MOD(I,9)+1,MOD(I,8)+1); END LOOP; END;
3.
Buat kode PHP pada file getSumZ.php yang menghitung jumlah Z, dan menampilkan waktu prosesnya. Jalankan melalui browser pada server lokal!
<?php
ini_set('max_execution_time',600); error_reporting(0); $username = "mtib"; $password = "tsbd"; $conn = oci_connect($username, $password); $start=time(); echo getSumZ1($conn)."<br>\n"; $finish=time(); echo "time: ". ($finish - $start) ." seconds<br>\n"; $start=time(); echo getSumZ2($conn)."<br>\n"; $finish=time(); echo "time: ". ($finish - $start) ." seconds<br>\n"; function getSumZ1($conn) { $stmt = oci_parse($conn, "SELECT X,Y FROM XYZ1"); oci_execute($stmt, OCI_DEFAULT); $sumZ = 0; while ($row = oci_fetch_assoc($stmt)) { $x = $row["X"]; $y = $row["Y"]; $z = 2 * pow($x,10) * pow($y,0) + 3 * pow($x,9) * pow($y,1) + 4 * pow($x,8) * pow($y,2) + 5 * pow($x,7) * pow($y,3) + 6 * pow($x,6) * pow($y,4) + 7 * pow($x,5) * pow($y,5) + 6 * pow($x,4) * pow($y,6) + 5 * pow($x,3) * pow($y,7) + 4 * pow($x,2) * pow($y,8) + 3 * pow($x,1) * pow($y,9) + 2 * pow($x,0) * pow($y,10); $sumZ += $z; } return $sumZ; } function getSumZ2($conn) { $stmt = oci_parse($conn, "SELECT SUM(
2*POWER(X,10)*POWER(Y,0) + 3*POWER(X,9)*POWER(Y,1) + 4*POWER(X,8)*POWER(Y,2) + 5*POWER(X,7)*POWER(Y,3) + 6*POWER(X,6)*POWER(Y,4) + 7*POWER(X,5)*POWER(Y,5) + 6*POWER(X,4)*POWER(Y,6) + 5*POWER(X,3)*POWER(Y,7) + 4*POWER(X,2)*POWER(Y,8) + 3*POWER(X,1)*POWER(Y,9) + 2*POWER(X,0)*POWER(Y,10) ) AS SUMZ2 FROM XYZ1"); oci_execute($stmt, OCI_DEFAULT); $row = oci_fetch_assoc($stmt); $sumZ = $row["SUMZ2"]; return $sumZ; } ?>
4.
Buat tabel XYZ2 dengan data berikut: TIPE NUMBER NUMBER NUMBER NUMBER PANJANG NULLITY KETERANGAN NOT NULL PK NOT NULL NOT NULL NOT NULL
KOLOM ID X Y Z
CREATE TABLE XYZ2 ( ID NUMBER NOT NULL, X NUMBER NOT NULL, Y NUMBER NOT NULL, Z NUMBER NOT NULL, CONSTRAINT XYZ2_PK PRIMARY KEY (ID) );
5.
CREATE OR REPLACE TRIGGER "XYZ2_T1" BEFORE insert on "XYZ2" for each row begin :NEW.Z := 2*POWER(:NEW.X,10)*POWER(:NEW.Y,0) + 3*POWER(:NEW.X,9)*POWER(:NEW.Y,1) + 4*POWER(:NEW.X,8)*POWER(:NEW.Y,2) + 5*POWER(:NEW.X,7)*POWER(:NEW.Y,3) + 6*POWER(:NEW.X,6)*POWER(:NEW.Y,4) + 7*POWER(:NEW.X,5)*POWER(:NEW.Y,5) + 6*POWER(:NEW.X,4)*POWER(:NEW.Y,6) + 5*POWER(:NEW.X,3)*POWER(:NEW.Y,7) + 4*POWER(:NEW.X,2)*POWER(:NEW.Y,8) +
6.
7.
Tambahkan code berikut pada file getSumZ.php dan refresh file tersebut di browser.
$start=time(); echo getSumZ3($conn)."<br>\n"; $finish=time(); echo "time: ". ($finish - $start) ." seconds<br>\n"; function getSumZ3($conn) { $stmt = oci_parse($conn, "SELECT SUM(Z) AS SUMZ3 FROM XYZ2"); oci_execute($stmt, OCI_DEFAULT);
8.
Coba jalankan query pada fungsi getSumZ2 dan getSumZ3 pada oracle web interface dan perhatikan waktu responsnya!
9.