MongoDB İndeksleme: createIndex() ve dropIndex()

⚡ Akıllı Özet

MongoDB İndeksler, sorguların her kaydı taramadan belgeleri bulabilmesi için bir koleksiyonun alanlarının sıralı bir alt kümesini depolar. createIndex, getIndexes ve dropIndex yöntemleri, performans açısından kritik olan bu yapıları oluşturur, listeler ve kaldırır.

  • ???? Amaç: İndeksler izin verir MongoDB Daha hızlı okuma için tam koleksiyon taramalarını atlayın.
  • createIndex: Tek alanlı veya bileşik indeksleri artan veya azalan sırada oluşturur.
  • 🔍 getIndexes: Varsayılan _id dahil olmak üzere, bir koleksiyondaki tüm indeksleri listeler.
  • 🗑️ dropIndex: Bir dizini kaldırır; dropIndexes ise _id dışındaki tüm dizinleri temizler.
  • 🇧🇷 Değiş tokuş: Çok fazla indeks, ekleme, güncelleme ve silme işlemlerini yavaşlatır.
  • 🤖 Yapay Zeka Ayarlaması: Asistanlar doğru indeksleri otomatik olarak önerir ve oluşturur.

MongoDB İndeks oluşturma indeksi silme

All ON XNUMX İmplant Tedavisi Nasıl Uygulanır? MongoDB Dizinler mi?

Dizinler herhangi bir veritabanında çok önemlidir ve MongoDB Bu durum farklı değil. İndekslerin kullanımıyla, sorgular gerçekleştirmek... MongoDB daha verimli hale gelir.

Eğer binlerce belgeden oluşan ve indekslenmemiş bir koleksiyonunuz varsa ve belirli belgeleri bulmak için sorgulama yapıyorsanız, o zaman böyle bir durumda MongoDB Belgeleri bulmak için koleksiyonun tamamını taramak gerekecek. Ancak dizinleriniz olsaydı, MongoDB koleksiyonda aranması gereken belge sayısını sınırlamak için bu dizinleri kullanırdı.

İndeksler, bir koleksiyonun verilerinin kısmi bir bölümünü depolayan özel veri kümeleridir. Veriler kısmi olduğundan, bu verileri okumak daha kolay hale gelir. Bu kısmi küme, belirli bir alanın veya bir alan kümesinin değerini, alanın değerine göre sıralanmış şekilde depolar.

Endekslerin Etkisini Anlamak

Giriş bölümünde indekslerin sorgular için faydalı olduğu gösterilmiş olsa da, çok fazla indeksin ekleme, silme ve güncelleme gibi diğer işlemleri yavaşlatabileceği de belirtilmiştir.

Belgeler üzerinde sık sık ekleme, silme ve güncelleme işlemleri yapılıyorsa, indekslerin de o sıklıkta değiştirilmesi gerekecektir ki bu da koleksiyon için gereksiz bir yük olacaktır.

Aşağıdaki örnek, bir koleksiyonda hangi alan değerlerinin bir dizini oluşturabileceğini göstermektedir. Bir dizin, koleksiyondaki yalnızca bir alana veya koleksiyondaki birden fazla alana dayanabilir.

Aşağıdaki örnekte, Çalışan kimliği "1" ve ÇalışanCode "AA" indeksleri, koleksiyondaki belgeleri indekslemek için kullanılır. Dolayısıyla, bir sorgu araması yapıldığında, bu indeksler koleksiyondaki gerekli belgeleri hızlı ve verimli bir şekilde bulmak için kullanılacaktır.

Dolayısıyla arama sorgusu Çalışan bazlı olsa bileCode “AA”, o belge size iade edilecektir.

Endekslerin Etkisini Anlamak

Dizinler Nasıl Oluşturulur: createIndex()

Dizin oluşturma MongoDB kullanılarak yapılır createIndex yöntemi.

Aşağıdaki örnek, bir koleksiyona nasıl indeks ekleneceğini göstermektedir. "Employeeid" ve "EmployeeName" alan adlarına sahip aynı Employee koleksiyonuna sahip olduğumuzu varsayalım.

createIndex ile dizinler oluşturun

db.Employee.createIndex({Employeeid:1})

Code Açıklama:

  1. MKS createIndex yöntemi, belgenin “Çalışan Kimliğine” dayalı bir dizin oluşturmak için kullanılır.
  2. “1” parametresi, “Employeeid” alan değerleriyle dizin oluşturulduğunda bunların artan sırada sıralanması gerektiğini belirtir. Lütfen bunun, her belgeyi benzersiz şekilde tanımlayan _id alanından farklı olduğunu unutmayın. MongoDB Otomatik olarak oluşturulur. Belgeler artık _id alanına göre değil, Employeeid alanına göre sıralanacaktır.

Komut başarıyla yürütüldüğünde aşağıdaki çıktı görüntülenecektir:

Çıktı:

createIndex çıktısı

  1. numIndexesBefore: 1, komut çalıştırılmadan önce indekslerdeki alan değerlerinin sayısını gösterir. Her koleksiyonda, alan değeri olarak da sayılan _id alanı bulunur, bu nedenle numIndexesBefore 1'dir.
  2. numIndexesAfter: 2 ifadesi, komut çalıştırıldıktan sonra indekslerdeki alan değerlerinin sayısını gösterir.
  3. “ok: 1” çıktısı, işlemin başarılı olduğunu ve yeni indeksin koleksiyona eklendiğini belirtir.

Yukarıdaki kod, tek bir alan değerine dayalı bir dizin oluşturmayı göstermektedir, ancak birden fazla alan değerine dayalı bir dizin de oluşturulabilir. Aşağıdaki örnek, bunun nasıl yapılabileceğini göstermektedir:

Birden fazla alanda bileşik indeks oluşturun

db.Employee.createIndex({Employeeid:1, EmployeeName:1})

`createIndex` metodu artık birden fazla alan değerini dikkate alıyor; bu da dizinin "Employeeid" ve "EmployeeName" alanlarına göre oluşturulmasına neden oluyor. `Employeeid:1` ve `EmployeeName:1` ifadeleri, dizinin bu iki alan değeri üzerinden oluşturulması gerektiğini belirtir; `:1` ise artan sıralamayı gösterir. Bu, bileşik dizin olarak bilinir.

İndeksleri Bulma Yöntemi: getIndexes()

Bir dizini bulmak MongoDB kullanılarak yapılır Dizinleri al Bu yöntem, aşağıdaki örnekte nasıl yapılabileceği gösterilmektedir:

getIndexes ile dizinleri bulun

db.Employee.getIndexes()

GetIndexes yöntemi bir koleksiyondaki tüm dizinleri bulmak için kullanılır.

Komut başarıyla yürütüldüğünde aşağıdaki çıktı görüntülenecektir:

Çıktı:

getIndexes çıktısı

Çıktı, koleksiyonda iki dizin olduğunu gösteren bir belge döndürür: _id alanı ve Employeeid alanı. :1 ifadesi, dizindeki alan değerlerinin artan sırada oluşturulduğunu gösterir.

İndeksleri Nasıl Silebilirsiniz: dropIndex()

Bir dizini kaldırma işleminde MongoDB kullanılarak yapılır düşüş indeksi Bu yöntem, aşağıdaki örnekte nasıl yapılabileceği gösterilmektedir:

dropIndex ile dizinleri silin.

db.Employee.dropIndex({Employeeid:1})

`dropIndex` metodu, dizinden kaldırılması gereken alan değerlerini alır.

Komut başarıyla yürütüldüğünde aşağıdaki çıktı görüntülenecektir:

Çıktı:

dropIndex çıktısı

  1. nIndexesWas: 3, komut çalıştırılmadan önce indekslerdeki alan değerlerinin sayısını gösterir. Her koleksiyonda, alan değeri olarak da sayılan _id alanı bulunur.
  2. ok: 1 çıktısı işlemin başarılı olduğunu belirtir ve “Employeeid” alanının indeksten kaldırıldığını belirtir.

Koleksiyondaki tüm indeksleri aynı anda kaldırmak için dropIndexes komutu kullanılabilir. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir:

dropIndexes komutuyla tüm indeksleri silin.

db.Employee.dropIndexes()

dropIndexes yöntemi, _id dizini dışındaki tüm dizinleri bırakacaktır.

Komut başarıyla yürütüldüğünde aşağıdaki çıktı görüntülenecektir:

Çıktı:

dropIndex çıktısı

  1. nIndexesWas: 2 ifadesi, komut çalıştırılmadan önce indekslerdeki alan değerlerinin sayısını gösterir.
  2. Her koleksiyonun, alan değeri olarak da sayılan ve silinmeyecek olan _id alanı bulunur. MongoDBBu mesaj tam olarak bunu gösteriyor.
  3. ok: 1 çıkışı işlemin başarılı olduğunu belirtir.

SSS

Tek alanlı indeks, tek bir alanı sıralar ve yalnızca o alana göre filtreleme yapan sorgular için uygundur. Bileşik indeks ise birden fazla alanı tek bir yapıda kapsar ve bu alanları birlikte filtreleyen veya sıralayan sorgular için uygundur. Bileşik indeksler en fazla 32 alanı destekler.

_id alanı şudur: MongoDB'nin birincil anahtarı olduğundan, her koleksiyon otomatik olarak benzersiz bir _id indeksine sahip olur. Bu indeks silinemez. Bu nedenle, herhangi bir özel indeks eklemeden önce bile numIndexesBefore 1'den başlar.

Sorguyu .explain(“executionStats”) ile çalıştırın. Kazanan planda, IXSCAN aşaması bir indeksin kullanıldığı anlamına gelirken, COLLSCAN aşaması ise indeksin kullanılmadığı anlamına gelir. MongoDB Tüm belgeleri taradım ve yeni bir dizin oluşturmak faydalı olabilir.

Her bir dizinin ne sıklıkla erişildiğini görmek için `$indexStats` toplama aşamasını kullanın. Çok düşük kullanım oranına sahip dizinler disk alanını israf eder ve yazma işlemlerini yavaşlatır; bu nedenle, koleksiyonu sade tutmak için bunları `dropIndex` ile kaldırın.

Yapay zeka araçları, yavaş sorgu kayıtlarını analiz eder ve hangi alanların indekslenmesi gerektiğini önerir. MongoDB'ın Performans Danışmanı, endeks önerilerini etki, yardım ve performans açısından sıralar.ping Yüksek değerli indeksleri ekler ve gereksiz olanları atlarsınız.

Evet. AI Copilot asistanları, sade İngilizce istekleri, artan veya azalan anahtarlar ve bileşik alan sırası da dahil olmak üzere doğru createIndex sözdizimine dönüştürür ve ardından ortaya çıkan dizini açıklar.

ESR, Eşitlik, Sıralama, Aralık anlamına gelir. Bileşik bir indeks oluştururken, önce eşitlik eşleşme alanlarını, sonra sıralama alanlarını ve son olarak aralık filtrelerini yerleştirin. Bu sıralama, MongoDB İndeksi en verimli şekilde kullanın.

Kapsamlı bir sorgu, belgeleri okumadan, tamamen bir dizinden yanıtlanır. Filtredeki ve projeksiyondaki her alan tek bir dizinde bulunduğunda, MongoDB Daha hızlı sonuç verir.

Bu yazıyı şu şekilde özetleyin: