Bir veritabanı dizini, veri ve dizinin veri yapısını koruyan ve ek depolama alanı maliyetiyle bir veritabanı tablosundaki veri alma işlemlerinin hızını artıran bir veri yapısıdır. İndeksler, bir veritabanı tablosuna yapılan bütün erişimlerde, veritabanı tablosundaki her satırı tek tek aramaya gerek kalmadan hızlı bir şekilde verileri bulmak için kullanılır. İndeksler, hızlı rastgele aramalarda ve sipariş edilen kayıtların verimli bir biçimde erişimine olanak sağlayan bir veritabanı tablosunun bir veya daha fazla sütunu kullanılarak ve genişletilerek oluşturulabilir.

Dizin, bir verinin seçilen sütunlarının bir kopyasını, çok verimli bir şekilde aranabilen, aynı zamanda bir alt düzey disk blok adresi veya kopyalanan verinin tüm satırına doğrudan bağlantı içeren bir kopyadır. Bazı veritabanları, geliştiricilerin işlevler veya ifadeler üzerinde dizinler oluşturmalarına izin vererek dizin oluşturma gücünü genişletir. Örneğin, last\_name alanının yalnızca büyük harf sürümlerini dizinde saklanacak üst(last\_name) adlı bir dizin oluşturulabilir. Bazen desteklenen başka bir seçenek, parçalı indekslemelerin kullanılmasıdır; buradaki dizin girdileri yalnızca bazı koşullu ifadeleri karşılayan kayıtlar için oluşturulmuştur. Esnekliğin bir diğer yönü, kullanıcı tanımlı işlevlerin yanı sıra sunucu taraflı işlevlerin pek çok çeşidinden oluşan ifadelerin kullanılarak, dizine eklenmesine izin vermektir.

Kullanımı
---------

### Hızlı arama desteği

Çoğu veritabanı yazılımında, veri setinden yapılacak olan doğrusal bir arama, büyük veritabanlarında verimsizdir, bu nedenle performansı artırmak için doğrusal olmayan arama biçimini sağlayan dizin oluşturma teknolojileri bulunmaktadır.

Bir veritabanının N adet veri maddesini içerdiğini ve yalnızca bir verinin seçilmesi gerektiğini varsayalım. Basit bir uygulama, gerekli denetimleri yapmak amacıyla her bir maddeyi tek tek alır ve inceler. Eşleşen tek bir öge varsa, bu tek bir ögeyi bulduğunda durabilir, ancak birden çok eşleşme varsa, her şeyi denetlemelidir.Bu, en kötü durumda operasyonların sayısı O(N) veya doğrusal zaman artımının bütün veri setinin sonuna kadar süreceği anlamına gelir.Veritabanları çok sayıda nesnelerden oluşabilir ve arama sıklıkla yapılan bir işlemdir.Bu durumda genellikle, performansı artırmak arzu edilir.

İndeksleme, arama performansını artıran herhangi bir veri yapısıdır. Bu amaçla kullanılan birçok veri yapısı vardır. Arama performansı, dizin boyutu ve dizin güncelleme performansı gibi fenomenleri içeren karmaşık tasarım biçimleri vardır. Çoğu dizin tasarımları logaritmik(O (log (N))) arama performansı sergiler ve bazı uygulamalarda düz (O (1)) gibi bir performansın elde edilmesi de mümkündür.

### Veritabanı kısıtlamaları

İndeksler, UNIQUE, EXCLUSION, PRIMARY KEY ve FOREIGN KEY gibi veritabanı kısıtlamalarını kullanır.Bir dizin, tabloda eş değersiz bir kısıt oluşturan UNIQUE kullanabilir. Veritabanı sistemleri genellikle gizli biçimde PRIMARY KEY olarak tanımlanan bir dizi sütun gruplarından üst bir dizin oluşturur ve bazıları ise bu kısıtlamayı kontrol etmek için mevcut bir dizini kullanabilir. Çoğu veritabanı sistemi, FOREIGN KEY sınırlamasındaki her başvuru için, başvurulan sütun kümesinin dizine eklenmesini gerektirir, böylece kısıtlamaya katılan tablolarda ekleme, güncelleme ve silme performansını artırır.

Bazı veritabanı sistemleri, yeni eklenen veya güncellenen bir kayıt için belirli bir yüklemin başka hiçbir kayıt için tutulmadığını garanti eden bir EXCLUSION kısıtlamasını desteklemektedir. Bu ise; eşsiz bir kısıtlama sağlamak ve örtüşen zaman aralıklarının veya kesişen geometri nesnelerinin tabloda ilaveten depolanmamasını sağlamak gibi daha karmaşık sistemleri uygulamak için kullanılabilir. Böyle bir kısıtlamayı kullanmak için kayıtların hızlı aranmasını destekleyen bir indeksleme yöntemi gereklidir.

Kaynakça
--------

1. ↑  "PostgreSQL 9.1.2 Documentation: CREATE TABLE". 2 Eylül 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 30 Ocak 2017.

| * g
* t
* d
Bilgisayar biliminin alt dalları |
| --- |
| Matematiksel temeller | Matematiksel mantık **·**  Kümeler kuramı **·**  Sayı teorisi **·**  Çizge teorisi **·**  Tip teorisi **·**  Kategori teorisi **·**  Sayısal çözümleme **·**  Bilgi teorisi **·**  Kombinatorik **·**  Boole cebiri |  |
| Hesaplama teorisi | Otomat teorisi **·**  Hesaplanabilirlik teorisi **·**  Hesaplamalı karmaşıklık teorisi **·**  Kuantum hesaplama teorisi |
| Algoritmalar ve veri yapıları | Algoritma çözümlemesi **·**  Algoritma tasarımı **·**  Hesaplamalı geometri |
| Programlama dilleri ve derleyiciler | Ayrıştırıcılar **·**  Yorumlayıcılar **·**  Yordamsal programlama **·**  Nesne yönelimli programlama **·**  Fonksiyonel programlama **·**  Mantık programlama **·**  Programlama paradigmaları |
| Eşzamanlı, paralel ve dağıtık sistemler | Çoklu işleme **·**  Dağıtımlı hesaplama **·**  Eşzamanlılık denetimi |
| Yazılım mühendisliği | Gereksinim çözümleme **·**  Yazılım tasarımı **·**  Bilgisayar programlama **·**  Biçimsel yöntemler **·**  Yazılım testi **·**  Yazılım geliştirme süreci |
| Sistem mimarisi | Bilgisayar mimarisi **·**  Bilgisayar organizasyonu **·**  İşletim sistemi |
| Telekomünikasyon ve ağ oluşturma | Bilgisayar müziği **·**  Yönlendirme **·**  Örgü topolojisi **·**  Kriptografi |
| Veritabanları | Veritabanı yönetim sistemleri **·**  İlişkisel veritabanı **·**  SQL **·**  İşlem yürütme **·**  Veritabanı indeksleme **·**  Veri madenciliği **·**  Metadata (Üst veri) **·**  Ana veri (Master data) |
| Yapay zekâ | Otomatikleştirilmiş muhakeme **·**  Bilgisayarlı dilbilim **·**  Bilgisayarlı görü **·**  Evrimsel hesaplama **·**  Uzman sistemler **·**  Makine öğrenimi **·**  Doğal dil işleme **·**  Robotik |
| Bilgisayar grafikleri | Görselleştirme **·**  Bilgisayar animasyonu **·**  Görüntü işleme |
| İnsan-bilgisayar etkileşimi | Bilgisayar erişilebilirliği **·**  Kullanıcı arayüzleri **·**  Giyilebilir hesaplama **·**  Yaygın bilişim **·**  Sanal gerçeklik |
| Bilimsel hesaplama | Yapay yaşam **·**  Biyoenformatik **·**  Bilişsel bilim **·**  Bilgisayarlı kimya **·**  Hesaplamalı nörobilim **·**  Hesaplamalı fizik **·**  Sayısal algoritmalar **·**  Sembolik matematik |
| Bilgisayar bilimi, ACM Hesaplama ve Sınıflandırma Sistemi'ne göre farklı konu ve alanlara ayrılabilir. |