Contoh Store Procedure SQL Agar Menampilkan Data SQL Lebih Cepat

 
Contoh Store Procedure SQL Agar Menampilkan Data SQL Lebih Cepat

Membuat store procedure di SQL yang dapat meningkatkan kinerja query dan menampilkan data dengan lebih cepat memerlukan beberapa langkah. Berikut adalah contoh store procedure di MySQL untuk menampilkan data dari tabel orders dengan optimalisasi sederhana. Dalam contoh ini, kita akan menggunakan indeks dan parameterisasi query untuk meningkatkan performa.

Menyiapkan Tabel dan Indeks:

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    total_amount DECIMAL(10, 2),
    status VARCHAR(50)
);
 

Menambahkan indeks pada kolom yang sering digunakan dalam WHERE clause

CREATE INDEX idx_orders_customer_id ON orders (customer_id);
CREATE INDEX idx_orders_order_date ON orders (order_date);
 

Masukkan data dummy


INSERT INTO orders (order_id, customer_id, order_date, total_amount, status)
VALUES
    (1, 101, '2024-06-25', 150.75, 'Completed'),
    (2, 102, '2024-06-26', 210.50, 'Pending'),
    (3, 103, '2024-06-26', 75.00, 'Completed'),
    (4, 101, '2024-06-27', 320.25, 'Shipped'),
    (5, 104, '2024-06-27', 500.00, 'Pending');
 

Membuat Store Procedure

 DELIMITER //

CREATE PROCEDURE GetOrders(
    IN p_customer_id INT,
    IN p_start_date DATE,
    IN p_end_date DATE
)
BEGIN
    -- Menggunakan query yang dioptimalkan dengan filter pada indexed columns
    SELECT
        order_id,
        customer_id,
        order_date,
        total_amount,
        status
    FROM
        orders
    WHERE
        customer_id = p_customer_id
        AND order_date BETWEEN p_start_date AND p_end_date
    ORDER BY
        order_date DESC;
END //

DELIMITER ;

Menjalankan Store Procedure


CALL GetOrders(101, '2024-06-25', '2024-06-27');
 

Penjelasan

1.Indeks
Menambahkan indeks pada kolom customer_id dan order_date mempercepat pencarian data berdasarkan kolom-kolom ini, karena indeks mempermudah database dalam menemukan baris yang sesuai.
2.Parameterisasi
Menggunakan parameter (p_customer_id, p_start_date, p_end_date) memungkinkan store procedure untuk dijalankan dengan berbagai input tanpa harus merombak query, mengurangi overhead parsing query berulang.
3.Optimisasi Query
Filter WHERE menggunakan kolom yang diindeks (customer_id, order_date) dan membatasi hasil dengan BETWEEN serta ORDER BY order_date DESC untuk pengambilan data yang relevan secara cepat dan teratur.

Tips Tambahan

• Analisis Query: Gunakan tools seperti EXPLAIN dalam MySQL untuk menganalisis query dan memastikan penggunaan indeks dengan optimal.

EXPLAIN SELECT
    order_id,
    customer_id,
    order_date,
    total_amount,
    status
FROM
    orders
WHERE
    customer_id = 101
    AND order_date BETWEEN 2024-06-25' AND ' 2024-06-27'
ORDER BY
    order_date DESC;

• Caching: Pertimbangkan caching jika data tidak sering berubah dan permintaan yang sama sering terjadi.

Dengan mengikuti langkah-langkah di atas, store procedure Anda dapat berjalan lebih cepat dan efisien, meningkatkan performa sistem secara keseluruhan.