SQL'de index nedir? Açıkça anlamak için açıklayabilir veya referans verebilir misiniz?
İndeksi nerede kullanmalıyım?
Veritabanında aramayı hızlandırmak için bir dizin kullanılır. MySQL'in konuyla ilgili bazı iyi belgeleri vardır (diğer SQL sunucuları için de geçerlidir): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
Bir dizin, sorgunuzdaki bazı sütunlarla eşleşen tüm satırları verimli bir şekilde bulmak ve ardından tam eşleşmeleri bulmak için tablonun yalnızca bu alt kümesinde dolaşmak için kullanılabilir. Eğer WHERE
cümlesindeki herhangi bir sütunda indeksiniz yoksa, SQL
sunucusu tüm tabloda dolaşmak ve eşleşip eşleşmediğini görmek için her satırı kontrol etmek zorundadır, bu da büyük tablolarda yavaş bir işlem olabilir.
Dizin aynı zamanda bir UNIQUE
dizini de olabilir, yani bu sütunda yinelenen değerlere sahip olamazsınız veya bazı depolama motorlarında değerin veritabanı dosyasında nerede saklanacağını tanımlayan bir PRIMARY KEY
olabilir.
MySQL'de sorgunuzun herhangi bir dizini kullanıp kullanmayacağını görmek için SELECT
deyiminizin önünde EXPLAIN
kullanabilirsiniz. Bu, performans sorunlarını gidermek için iyi bir başlangıçtır. Daha fazlasını buradan okuyun:
http://dev.mysql.com/doc/refman/5.0/en/explain.html
Bir dizin, sorguların performansını hızlandırmak için kullanılır. Bunu, ziyaret edilmesi/taranması gereken veritabanı veri sayfalarının sayısını azaltarak yapar.
SQL Server'da bir kümelenmiş dizin, bir tablodaki verilerin fiziksel sırasını belirler. Tablo başına yalnızca bir kümelenmiş dizin olabilir (kümelenmiş dizin tablodur). Bir tablodaki diğer tüm indeksler kümelenmemiş olarak adlandırılır.
Bir index birkaç farklı nedenden dolayı kullanılır. Ana neden, satırları daha hızlı alabilmeniz veya sıralayabilmeniz için sorgulamayı hızlandırmaktır. Diğer bir neden ise, başka hiçbir sütunun aynı değerlere sahip olmamasını garanti edecek bir birincil anahtar veya benzersiz dizin tanımlamaktır.