"Uygulamanız yavaş mı çalışıyor? Veritabanı sorgularınız saniyeler mi alıyor?" Laravel'de doğru indexleme stratejileri ile performansı nasıl maksimuma çıkaracağınızı öğrenelim!
Database index, arama hızını artıran özel veri yapılarıdır:
// Indexsiz sorgu: 2.4s $users = User::where('email', $email)->first(); // Indexli sorgu: 0.02s (120 kat hızlı!)
Schema::table('users', function (Blueprint $table) { $table->index('email'); // Normal index });
$table->unique('username'); // Aynı değerden sadece 1 tane
$table->index(['last_name', 'first_name']); // Çoklu sütun
Sütun TipiIndex Gerekli Mi?ÖrnekPrimary Key✅ Otomatikid
Foreign Key✅ Kesinlikleuser_id
Sık aranan alanlar✅ Evetemail
, username
Sıralama yapılan✅ Gereklicreated_at
Boolean değerler❌ Nadirenis_active
$table->index('email', 'active_users_email_index') ->where('is_active', true);
$table->fullText('body'); // Blog içeriklerinde arama
$table->index('column'); // B-tree (Default) $table->hashIndex('column'); // Hash (Eşitlik sorguları) $table->spatialIndex('location'); // Coğrafi veriler
Yavaş sorgularınızı analiz edin:
DB::enableQueryLog(); User::where('email', 'test@example.com')->first(); $query = DB::getQueryLog()[0]['query']; dd(DB::select("EXPLAIN $query"));
İyi Sonuç: type: ref
, possible_keys: email
, key: email
['a','b']
≠ ['b','a']
)composer require laravel/scout composer require algolia/algoliasearch-client-php
class Post extends Model { use Searchable; public function toSearchableArray() { return [ 'title' => $this->title, 'body' => $this->body ]; } }
SenaryoIndex ÖncesiIndex SonrasıKazanım100k kayıt arama1.8s0.02s90xSıralı listeleme1.2s0.15s8xJOIN sorguları3.4s0.4s8.5x
Doğru indexleme ile:
En çok hangi tablolarınızda index kullanıyorsunuz? Yorumlarda paylaşın! 💬
Bir sonraki yazımız: 🚀 [Laravel'de API Throttling: Aşırı Yüklenmeyi Önleme] - API'nizi kötüye kullanımdan koruyun!
#Laravel #Database #Performance #Indexing #WebDevelopment 🏎️