MongoDB Pengindeksan: createIndex() & dropIndex()

⚡ Ringkasan Cerdas

MongoDB Indeks menyimpan subset bidang koleksi yang terurut sehingga kueri dapat menemukan dokumen tanpa memindai setiap catatan. Metode createIndex, getIndexes, dan dropIndex membangun, mencantumkan, dan menghapus struktur penting untuk kinerja ini.

  • 🚀 Tujuan: Indeks memungkinkan MongoDB Lewati pemindaian koleksi lengkap untuk pembacaan yang lebih cepat.
  • buat indeks: Membangun indeks bidang tunggal atau gabungan dalam urutan naik atau turun.
  • 🔍 dapatkanIndeks: Mencantumkan semua indeks pada sebuah koleksi, termasuk _id default.
  • dropIndex: Menghapus satu indeks; dropIndexes menghapus semua indeks kecuali _id.
  • Kompromi: Terlalu banyak indeks memperlambat operasi penyisipan, pembaruan, dan penghapusan.
  • 🤖 Penyetelan AI: Asisten merekomendasikan dan menghasilkan indeks yang tepat secara otomatis.

MongoDB Pengindeksan createIndex dropIndex

Apa MongoDB Indeks?

Indeks sangat penting dalam database apa pun, dan dengan MongoDB Tidak ada bedanya. Dengan menggunakan indeks, melakukan kueri di MongoDB menjadi lebih efisien.

Jika Anda memiliki koleksi berisi ribuan dokumen tanpa indeks, dan kemudian Anda melakukan kueri untuk menemukan dokumen tertentu, maka dalam kasus seperti itu... MongoDB perlu memindai seluruh koleksi untuk menemukan dokumen. Namun jika Anda memiliki indeks, MongoDB akan menggunakan indeks ini untuk membatasi jumlah dokumen yang harus dicari dalam koleksi.

Indeks adalah kumpulan data khusus yang menyimpan sebagian data dari suatu koleksi. Karena datanya sebagian, maka data tersebut lebih mudah dibaca. Kumpulan data parsial ini menyimpan nilai dari suatu field tertentu, atau sekumpulan field, yang diurutkan berdasarkan nilai field tersebut.

Memahami Dampak Indeks

Meskipun pendahuluan telah menunjukkan bahwa indeks bermanfaat untuk kueri, memiliki terlalu banyak indeks dapat memperlambat operasi lain seperti operasi Sisipkan, Hapus, dan Perbarui.

Jika terdapat operasi penyisipan, penghapusan, dan pembaruan yang sering dilakukan pada dokumen, maka indeks perlu diubah sesering mungkin, yang akan menjadi beban tambahan bagi koleksi tersebut.

Contoh di bawah ini menunjukkan nilai-nilai field apa saja yang dapat membentuk indeks dalam sebuah koleksi. Sebuah indeks dapat didasarkan hanya pada satu field dalam koleksi, atau dapat didasarkan pada beberapa field dalam koleksi.

Pada contoh di bawah ini, Employeeid adalah “1” dan Employee adalah [nama karyawan].Code “AA” digunakan untuk mengindeks dokumen dalam koleksi. Jadi, ketika pencarian kueri dilakukan, indeks ini akan digunakan untuk menemukan dokumen yang dibutuhkan dalam koleksi dengan cepat dan efisien.

Jadi, meskipun kueri pencarian didasarkan pada KaryawanCode “AA”, dokumen itu akan dikembalikan.

Memahami Dampak Indeks

Cara Membuat Indeks: createIndex()

Membuat indeks di MongoDB dilakukan dengan menggunakan buatIndeks Metode.

Contoh berikut menunjukkan cara menambahkan indeks ke sebuah koleksi. Mari kita asumsikan bahwa kita memiliki koleksi Karyawan yang sama, yang memiliki nama bidang "Employeeid" dan "EmployeeName".

Buat indeks dengan createIndex

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

Code Penjelasan:

  1. The buatIndeks Metode ini digunakan untuk membuat indeks berdasarkan “Employeeid” pada dokumen.
  2. Parameter “1” menunjukkan bahwa ketika indeks dibuat dengan nilai bidang “Employeeid”, nilai tersebut harus diurutkan dalam urutan menaik. Harap dicatat bahwa ini berbeda dari bidang _id (yang secara unik mengidentifikasi setiap dokumen) yang MongoDB Dibuat secara otomatis. Dokumen sekarang akan diurutkan berdasarkan Employeeid dan bukan berdasarkan kolom _id.

Jika perintah berhasil dieksekusi, output berikut akan ditampilkan:

Keluaran:

buatIndeks keluaran

  1. numIndexesBefore: 1 menunjukkan jumlah nilai field dalam indeks sebelum perintah dijalankan. Setiap koleksi memiliki field _id, yang juga dihitung sebagai nilai field, sehingga numIndexesBefore adalah 1.
  2. numIndexesAfter: 2 menunjukkan jumlah nilai field dalam indeks setelah perintah dijalankan.
  3. Output “ok: 1” menunjukkan bahwa operasi berhasil, dan indeks baru ditambahkan ke koleksi.

Kode di atas menunjukkan cara membuat indeks berdasarkan satu nilai field, tetapi kita juga dapat membuat indeks berdasarkan beberapa nilai field. Contoh berikut menunjukkan bagaimana hal ini dapat dilakukan:

Buat indeks gabungan pada beberapa bidang.

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

Metode createIndex sekarang memperhitungkan beberapa nilai field, yang akan menyebabkan indeks dibuat berdasarkan “Employeeid” dan “EmployeeName”. Employeeid:1 dan EmployeeName:1 menunjukkan bahwa indeks harus dibuat berdasarkan dua nilai field ini, dengan :1 menunjukkan urutan menaik. Ini dikenal sebagai indeks gabungan.

Cara Menemukan Indeks: getIndexes()

Mencari indeks di MongoDB dilakukan dengan menggunakan mendapatkan indeks metode. Contoh berikut menunjukkan bagaimana hal ini dapat dilakukan:

Temukan indeks dengan getIndexes

db.Employee.getIndexes()

Metode getIndexes digunakan untuk menemukan semua indeks dalam koleksi.

Jika perintah berhasil dieksekusi, output berikut akan ditampilkan:

Keluaran:

keluaran getIndexes

Output yang dihasilkan berupa dokumen yang menunjukkan bahwa terdapat dua indeks dalam koleksi: kolom _id dan kolom Employeeid. Angka :1 menunjukkan bahwa nilai kolom dalam indeks dibuat dalam urutan menaik.

Cara Menghapus Indeks: dropIndex()

Menghapus indeks di MongoDB dilakukan dengan menggunakan indeks jatuh metode. Contoh berikut menunjukkan bagaimana hal ini dapat dilakukan:

Hapus Indeks dengan dropIndex

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

Metode dropIndex menerima nilai field yang diperlukan yang perlu dihapus dari indeks.

Jika perintah berhasil dieksekusi, output berikut akan ditampilkan:

Keluaran:

keluaran dropIndex

  1. nIndexesWas: 3 menunjukkan jumlah nilai field dalam indeks sebelum perintah dijalankan. Setiap koleksi memiliki field _id, yang juga dihitung sebagai nilai field.
  2. Output ok: 1 menentukan bahwa operasi berhasil, dan kolom “Employeeid” dihapus dari indeks.

Untuk menghapus semua indeks sekaligus dalam koleksi, Anda dapat menggunakan perintah dropIndexes. Contoh berikut menunjukkan bagaimana hal ini dapat dilakukan:

Hapus semua indeks dengan perintah dropIndexes

db.Employee.dropIndexes()

Metode dropIndexes akan menghapus semua indeks kecuali indeks _id.

Jika perintah berhasil dieksekusi, output berikut akan ditampilkan:

Keluaran:

dropIndexes output

  1. nIndexesWas: 2 menunjukkan jumlah nilai field dalam indeks sebelum perintah dijalankan.
  2. Setiap koleksi memiliki kolom _id, yang juga dihitung sebagai nilai kolom dan tidak akan dihapus oleh MongoDBItulah yang ditunjukkan oleh pesan ini.
  3. Output ok: 1 menunjukkan bahwa operasi berhasil.

Pertanyaan Umum Demo Slot

Indeks bidang tunggal mengurutkan satu bidang dan cocok untuk kueri yang memfilter hanya berdasarkan bidang tersebut. Indeks gabungan mencakup beberapa bidang dalam satu struktur dan cocok untuk kueri yang memfilter atau mengurutkan berdasarkan bidang-bidang tersebut secara bersamaan. Indeks gabungan mendukung hingga 32 bidang.

Kolom _id adalah MongoDBKunci utama 's, sehingga setiap koleksi secara otomatis mendapatkan indeks _id yang unik. Indeks ini tidak dapat dihapus. Itulah mengapa numIndexesBefore dimulai dari 1 bahkan sebelum Anda menambahkan indeks kustom apa pun.

Jalankan kueri dengan .explain(“executionStats”). Dalam rencana yang menang, tahap IXSCAN berarti indeks telah digunakan, sedangkan COLLSCAN berarti MongoDB Semua dokumen telah dipindai dan indeks baru mungkin akan membantu.

Gunakan tahap agregasi $indexStats untuk melihat seberapa sering setiap indeks diakses. Indeks dengan penggunaan yang sangat rendah memboroskan disk dan memperlambat penulisan, jadi hapus indeks tersebut dengan dropIndex agar koleksi tetap efisien.

Alat AI menganalisis log kueri yang lambat dan menyarankan bidang mana yang perlu diindeks. MongoDBPerformance Advisor memberi peringkat rekomendasi indeks berdasarkan dampaknya, membantuping Anda menambahkan indeks bernilai tinggi dan melewatkan indeks yang berlebihan.

Ya. Asisten AI Copilot mengubah permintaan dalam bahasa Inggris biasa menjadi sintaks createIndex yang benar, termasuk kunci yang menaik atau menurun dan urutan bidang gabungan, lalu menjelaskan indeks yang dihasilkan.

ESR adalah singkatan dari Equality (Kesamaan), Sort (Urutkan), Range (Rentang). Saat membangun indeks gabungan, tempatkan kolom pencocokan kesamaan terlebih dahulu, kemudian kolom pengurutan, lalu filter rentang. Urutan ini memungkinkan MongoDB Gunakan indeks tersebut seefisien mungkin.

Sebuah kueri tertutup dijawab sepenuhnya dari sebuah indeks, tanpa membaca dokumen. Ketika setiap bidang dalam filter dan proyeksi berada dalam satu indeks, MongoDB memberikan hasil lebih cepat.

Ringkaslah postingan ini dengan: