Panduan Praktis Optimasi SQL dengan Claude Code
Pelajari tentang panduan praktis optimasi SQL menggunakan Claude Code. Dilengkapi tips praktis dan contoh kode.
Praktik Optimasi Query SQL dengan Claude Code
Masalah performa database terjadi di banyak proyek. Dengan Claude Code, mulai dari identifikasi penyebab query lambat hingga desain index, optimasi SQL bisa dilakukan secara efisien.
Analisis Slow Query
Cara Membaca Execution Plan
> Analisis penyebab query berikut lambat:
> SELECT u.*, COUNT(o.id) as order_count
> FROM users u
> LEFT JOIN orders o ON u.id = o.user_id
> WHERE u.created_at > '2025-01-01'
> GROUP BY u.id
> ORDER BY order_count DESC
> LIMIT 20;
Jika kamu menempelkan hasil execution plan (EXPLAIN ANALYZE) ke Claude Code, dia akan mengidentifikasi bottleneck dan menyajikan saran perbaikan.
-- Setelah perbaikan: hanya pilih kolom yang diperlukan, manfaatkan index
SELECT
u.id,
u.name,
u.email,
COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.created_at > '2025-01-01'
GROUP BY u.id, u.name, u.email
ORDER BY order_count DESC
LIMIT 20;
-- Index yang direkomendasikan
CREATE INDEX idx_users_created_at ON users(created_at);
CREATE INDEX idx_orders_user_id ON orders(user_id);
Desain Index
Optimasi Composite Index
> Desain index yang optimal untuk kondisi pencarian berikut:
> - Range search berdasarkan status + created_at
> - Filter + sort berdasarkan category + price
-- Tempatkan kondisi equality di depan, kondisi range di belakang
CREATE INDEX idx_products_status_created
ON products(status, created_at DESC);
-- Covering index untuk menghindari akses tabel tambahan
CREATE INDEX idx_products_category_price
ON products(category, price)
INCLUDE (name, description);
Claude Code juga menjelaskan prinsip desain seperti “letakkan kolom dengan cardinality tinggi di depan” dan “letakkan kolom range search di akhir index”.
Deteksi dan Pemecahan Masalah N+1
> Periksa apakah kode ORM ini memiliki masalah N+1:
// Ada masalah N+1
const users = await prisma.user.findMany();
for (const user of users) {
const orders = await prisma.order.findMany({
where: { userId: user.id },
});
}
// Setelah perbaikan: ambil sekaligus dengan include
const users = await prisma.user.findMany({
include: {
orders: true,
},
});
Pemanfaatan Window Function
Query agregasi dan ranking yang kompleks bisa ditulis lebih efisien dengan window function dibandingkan subquery.
-- Ranking penjualan dalam setiap kategori
SELECT
product_name,
category,
revenue,
RANK() OVER (PARTITION BY category ORDER BY revenue DESC) as rank,
SUM(revenue) OVER (PARTITION BY category) as category_total
FROM product_sales;
Partitioning
Partitioning juga efektif untuk tabel dengan data besar. Jika kamu meminta Claude Code “partisi tabel ini berdasarkan bulan”, dia akan menyarankan strategi partisi yang sesuai.
Summary
Dengan Claude Code, kamu bisa meningkatkan secara konsisten mulai dari analisis bottleneck query SQL, desain index, hingga optimasi level ORM. Lihat juga Migrasi Database dan Pemanfaatan Prisma ORM sebagai referensi.
Untuk detail performa SQL, lihat Use The Index, Luke.
Related Posts
Cara Mempercepat Side Project dengan Claude Code [Dengan Contoh]
Pelajari cara mempercepat project development personal secara drastis menggunakan Claude Code. Dilengkapi contoh nyata dan workflow praktis dari ide hingga deployment.
Cara Mengotomatisasi Refactoring dengan Claude Code
Pelajari cara mengotomatisasi code refactoring secara efisien menggunakan Claude Code. Dilengkapi prompt praktis dan pola refactoring konkret untuk project nyata.
Panduan Lengkap Konfigurasi CORS dengan Claude Code
Pelajari tentang panduan lengkap konfigurasi CORS menggunakan Claude Code. Dilengkapi tips praktis dan contoh kode.