Kod Uzmanı
Yazılım

MySQL Veritabanı Optimizasyonu: İndeksleme ve Sorgu Hızlandırma

Milyonlarca verisi olan veritabanlarında sorgu süresini düşüren indeksleme ve mimari taktikler.

Yayın: 26.07.2026 Güncelleme: 21.09.2026 2 dk okuma
MySQL Veritabanı Optimizasyonu: İndeksleme ve Sorgu Hızlandırma

Yavaşlayan Veritabanları Sitenizi Kilitler

Web projelerinde veritabanı tablonuzda binlerce veya milyonlarca satır biriktikçe SELECT sorguları yavaşlamaya başlar. Doğru mimari kurulmamış ve indeksleme yapılmamış bir MySQL veritabanı, sunucu işlemcisini (CPU) %100 yük altına sokarak sitenin kilitlenmesine ve çökmesine neden olur. Yüksek trafikli ve hızlı çalışan bir web yazılımının arkasında mutlaka optimize edilmiş bir veritabanı katmanı yer almalıdır.

MySQL İndeks (INDEX) Mantığı ve Doğru Kullanımı

Veritabanında indeks kullanmak, kalın bir kitabın en arkasındaki fihrist bölümüne benzer. İndeks olmadığında MySQL aradığı veriyi bulmak için tablodaki tüm satırları baştan sona tek tek tarar (Full Table Scan). İndeks eklendiğinde ise veri doğrudan nokta atışı bulunur.

Hangi Sütunlara İndeks Eklenmelidir?

  • WHERE Cümlelerinde Sık Kullanılan Sütunlar: Örneğin makaleleri durumuna göre süzen sorgular için status sütununa indeks eklenmelidir.
  • JOIN İşlemlerinde Kullanılan Yabancı Anahtarlar: İki tabloyu bağlayan category_id, user_id gibi alanlar mutlaka indekslenmelidir.
  • ORDER BY ve GROUP BY Sütunları: Sıralama yapılan created_at veya views sütunları indekslendiğinde sıralama işlemi hafızada anında gerçekleşir.
  • Benzersiz Alanlar (Unique Index): slug, email gibi eşsiz olması gereken sütunlara UNIQUE INDEX tanımlanmalıdır.

EXPLAIN Komutu İle Sorgu Analizi Yapma

Yavaş çalışan sorguları tespit etmek için SQL cümlenizin başına EXPLAIN ekleyerek çalıştırın. Çıkan sonuçta type sütunu ALL görünüyorsa, o sorgunun tüm tabloyu taradığı ve acilen indekse ihtiyaç duyduğu anlamına gelir. type değerinin ref veya eq_ref olması ideal durumdur.

Sorgu Hızlandırma İçin Altın Kurallar

1. SELECT * Kullanımından Kaçının

İhtiyacınız olmayan sütunları çekmek bellek tüketimini artırır. Tüm tabloyu çekmek yerine sadece ihtiyacınız olan alanları belirtin: SELECT id, title, slug FROM posts.

2. Wildcard (%) Aramalarını Başta Kullanmayın

SQL içinde arama yaparken yüzde işaretini kelimenin başında kullanmak indeksi geçersiz kılar ve tüm tabloyu taratır. Mümkünse aramayı doğrudan terim ile başlatın veya Full-Text Search indekslerini kullanın.

3. InnoDB Depolama Motorunu Tercih Edin

Eski MyISAM motoru yerine satır bazlı kilitleme ve ACID uyumluluğu sunan InnoDB depolama motorunu kullanın. Bu sayede bir satır güncellenirken tüm tablo kilitlenmez.

InnoDB Buffer Pool Size Ayarı

Sunucu tarafındaki my.cnf dosyasında innodb_buffer_pool_size değerini sunucu RAM boyutunun %60-70'i kadar tahsis etmek, sık kullanılan verilerin doğrudan bellekten (RAM) okunmasını sağlar ve disk okuma yükünü sıfırlara indirir.

Veritabanı mimarinizi optimize etmek, sorgu sürelerinizi milisaniyelere düşürmek ve yüksek performanslı yazılımlar geliştirmek için Kod Uzmanı Yazılım Ekibi ile iletişime geçebilirsiniz.

Bu konu için destek

Web projenizi birlikte değerlendirelim

Hız, güvenlik ve dönüşüm hedeflerinize uygun yalın bir yol haritası çıkaralım.

Projenizi Konuşalım →
Rehberi paylaş: WhatsApp X LinkedIn
Yazar

Ahmet Yılmaz — Kod Uzmanı

Web geliştirme, PHP, performans optimizasyonu ve mobil uygulama geliştirme alanlarında çalışan yazılım geliştirici.

Yazar ve editoryal yaklaşım →

💬 Yorumlar 0

Düşüncelerinizi Paylaşın

E-posta adresiniz sitede yayınlanmaz.

Bu rehber için henüz onaylanmış yorum yok.

Teknik kontrol

İçerik standardımız

  • • Son güncelleme tarihi görünür
  • • Mutlak SEO vaatlerinden kaçınılır
  • • Uygulanabilir teknik sınırlar açıklanır
Kod Uzmanı Ajans

Web siteniz gerçekten iş üretiyor mu?

Hız, teknik SEO ve dönüşüm darboğazlarını birlikte inceleyelim; yalnızca ihtiyaç duyduğunuz çözümü planlayalım.

Projenizi Konuşalım →