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
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
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.
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.
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.
Posting Komentar