byhk44
byhk44 Index arama yapılan kısımlar için mi kullanılıyor yoksa 20 sütunlu bir verinin 3 parçasını anasayfada veya kategori sayfalarında gösterirken mi index lazım
Index kayıtlara erişirken gerekli, kayıtlara hızlı bir şekilde erişmeniz için. Gösterme dediğiniz işlem kayıtlar çekildikten sonra, PHP ile yapılan bir işlem. O aşamaya geldiğinizde index ile işiniz kalmamış oluyor.
Her veri çekme işlemi veritabanı genelinde bir arama/filtreleme işlemidir. SELECT * FROM users
yaptığınızda tablolar içinden sadece users tablosundaki kayıtları istiyorsunuz, bu da bir çeşit filtrelemedir ama biz arama/filtreleme derken aslında bir tablo üzerinde yapılan işlemden bahsederiz o yüzden SELECT * FROM users
ifadesinde arama/filtreleme yok. Olabilmesi için WHERE, MATCH...AGAINST vs kullanılması gerekiyor, yani filtrelenmesi gerekiyor. Yani kabaca söylemek gerekirse WHERE kullanılan sorguda indexleme yapma ihtiyacınız olabilir. Bu sadece SELECT için değil WHERE kullanılan UPDATE ve DELETE sorguları için de geçerli ama UPDATE ve DELETE kısımlarında işler biraz karışıyor, sadece okuma değil yazma ve silme işlemlerinde de performans söz konusu, o yüzden o kısımları şimdilik düşünmenize gerek yok.
Bu anlattıklarım ve etkileri sadece farklı veritabanları için değil aynı veritabanındaki farklı motorlar içinde bile değişiklik gösterebilir. MySQL'de InnoDB ile MyISAM motorlarında indexler farklı depolanır mesela. MySQL'de foreign key için otomatik index oluşturulurken PostgreSQL'de sizin ayrıca oluşturmanız gerekir vs...
Index de yer kaplar, gereksiz atılan indexler fazla yer tüketimine ve yavaşlamalara neden olur. Bilinçli yapmanız gerekiyor.
Tabloda index kullanılması WHERE kullandığınızda her zaman index kullanılacağı anlamına gelmez. Onu veritabanı motoru belirliyor, sorgu sırasında planlama yapıyor hangisi daha performanslı ise onu kullanıyor. O yüzden EXPLAIN ANALYZE yaptığınızda aynı sorguda farklı kayıt sayılarında index kullanımında farklılıklar görebilirsiniz.
Bir tabloda 500-600 binden az kayıt varsa genellikle indexleri düşünmenize gerek kalmıyor, index kullanmadan da hız yeterli olacaktır diye düşünüyorum. Milyonlarla ilgilendiğinizde index önemli oluyor.