Oracle Dizini Oluştur

Oracle Dizini Olustur



Oracle veritabanlarında dizin, bir veritabanı tablosunda veri alma işlemlerinin hızını artıran bir veri yapısını ifade eder. Ancak bu, veritabanınızda fazladan yazma işlemleri ve depolama alanı gerektirebilir.

Bir veritabanı indeksinin yararlı olabileceği yerlerin bir örneği, bir müşteri ilişkileri yönetimi sistemidir.







Böyle bir sistemde müşteri bilgilerinin saklandığı bir veri tabanı tablomuz olabilir. Bu, adı, adresi, ödeme yöntemlerini, iletişim bilgilerini vb. içerebilir.



Tablo çok sayıda, belki de milyonlarca kayıt içeriyorsa, veritabanından belirli müşteri bilgilerinin aranması uzun zaman ve kaynak gerektirebilir. Bu, özellikle performansın kritik olduğu veritabanlarında olumsuz bir olgudur.



Bunun etrafından dolaşmak için bir veritabanı dizini kullanabiliriz.





Örneğin, müşterinin adı sütununda, veritabanı sisteminin adı kullanarak belirli bir müşterinin bilgilerini hızlı bir şekilde bulmasını ve almasını sağlayacak bir dizin oluşturabiliriz. Bu nedenle, veritabanı motoru tablodaki tüm satırları ve sütunları incelemek yerine, müşteri bilgilerini aramak için yalnızca dizini kullanır.

Bu öğreticide, yeni bir dizin başlatmak için Oracle veritabanında CREATE INDEX komutunu nasıl kullanacağınızı öğreneceksiniz.



Oracle Dizin Beyanı Oluştur

Aşağıda, Oracle veritabanlarında CREATE INDEX ifadesinin söz dizimi gösterilmektedir:

INDEX OLUŞTUR dizin_adı
ON tablo_adı (sütun1, sütun2, ...);

Yukarıdaki sözdizimi, indeks anahtarı olarak belirtilen sütunları (sütun1, sütun2, vb.) kullanarak tablo_adı adlı tablo üzerinde dizin_adı adlı bir dizin oluşturur.

Oracle'da birincil anahtar, bir tablodaki her satırı benzersiz şekilde tanımlayan bir sütun veya sütunlar kümesidir. Varsayılan olarak Oracle, benzersizlik kısıtlamasını uygulamak ve birincil anahtar aramalarının performansını iyileştirmek için bir tablonun birincil anahtar sütunlarında otomatik olarak benzersiz bir dizin oluşturur.

Ancak bazı durumlarda, belirli bir tablo için manuel olarak yeni bir dizin oluşturmanız gerekebilir.

Bunu nasıl başarabileceğimize dair bazı örneklere bakalım.

Oracle Dizin Oluşturma Örneği

Aşağıdaki çıktıda gösterildiği gibi çalışan bilgilerini içeren bir tablomuz olduğunu varsayalım:

ÇALIŞANLAR arasından ad, soyad, maaş, işe alma tarihi seçin;

Oracle Tek Sütun için Dizin Oluşturma

First_name sütununu kullanarak bir dizin oluşturmak istediğimizi varsayalım. Gösterildiği gibi bir sorgu çalıştırabiliriz:

EMPLOYEES(FIRST_NAME) üzerinde first_name_lookup dizini oluştur;

Bu CREATE INDEX deyimi, FIRST_NAME sütununu dizin anahtarı olarak kullanarak EMPLOYEES tablosunda first_name_lookup adlı bir dizin oluşturur. Bu dizin, çalışanları adlarına göre arayan sorguların performansını iyileştirmek için kullanılabilir.

Dizini oluşturduktan sonra, gösterildiği gibi belirli bir çalışanı aramak için kullanabiliriz:

ad, soyad, maaş, kiralama_tarihi SEÇİN
çalışanlardan
WHERE first_name = 'William';

Sonuç:

first_name_lookup dizini olmadan, veritabanı sisteminin FIRST_NAME sütununun 'William'a eşit olduğu tüm satırları bulmak için tüm EMPLOYEES tablosunu taraması gerekir. anahtar olarak 'John' değerini kullanarak indeksleyin ve ardından istenen satırları tablodan alın, bu çok daha hızlı olacaktır.

Planı açıkla komutunu kullanarak sorgu yaparken kullanılan adımları gösterildiği gibi görüntüleyebilirsiniz:

SELECT ad, soyad, maaş, işe alma_tarihi için planı açıkla
çalışanlardan
WHERE first_name = 'William';

Ortaya çıkan sorgu planı:

Örnek 2 – Birden Çok Sütunlu Oracle Create Index

Benzer şekilde, belirli bir tabloda birden fazla sütundan oluşan bir dizin oluşturabiliriz. Örneğin, first_name ve last_name sütunlarından oluşan bir dizin oluşturmak istediğimizi varsayalım.

Kodu gösterildiği gibi kullanabiliriz:

EMPLOYEES(FIRST_NAME, LAST_NAME) üzerinde multi_lookup dizini oluştur;

Bu CREATE INDEX deyimi, FIRST_NAME ve LAST_NAME sütunlarını dizin anahtarı olarak kullanarak EMPLOYEES tablosunda multi_lookup adlı bir dizin oluşturur.

Oluşturulduktan sonra, bu dizini örnek sorguda gösterildiği gibi kullanabiliriz:

ad, soyad, maaş, kiralama_tarihi SEÇİN
çalışanlardan
WHERE first_name = 'William' VE last_name = 'Smith';

Sonuç değeri:

Ve burada, arama kapsamını sınırlamak için dizinleri kullanarak veritabanı sorgularınızı hızlandırma yönteminiz var.

Çözüm

Oracle'daki CREATE INDEX ifadesi, veri alma işlemlerinin performansını artırmak için bir tablo üzerinde bir dizin oluşturmamıza izin verir. Bununla birlikte, dizinler sorgu performansını iyileştirebilse de, aynı zamanda depolama alanı cezalarına da maruz kalırlar, bu da yazma hızının düşmesine yol açar, bunları yalnızca gerektiğinde kullanın.