Ringkasan indeks
Halaman ini menjelaskan pengindeksan untuk Firestore dengan kompatibilitas MongoDB. Firestore dengan kompatibilitas MongoDB tidak membuat indeks apa pun secara default. Untuk meningkatkan performa database, buat indeks untuk kueri yang paling sering Anda gunakan.
Indeks memiliki dampak besar pada performa database. Jika indeks ada untuk kueri, database dapat menampilkan hasil secara efisien dengan mengurangi jumlah data yang perlu dipindai dan mengurangi pekerjaan yang diperlukan untuk mengurutkan hasil. Namun, entri indeks meningkatkan biaya penyimpanan dan jumlah pekerjaan yang dilakukan selama operasi tulis pada kolom yang diindeks.
Definisi dan struktur indeks
Indeks terdiri dari hal-hal berikut:
- ID koleksi
- daftar kolom dalam koleksi tertentu
- urutan, baik menaik maupun menurun, untuk setiap kolom
Indeks juga dapat mengaktifkan opsi sebar dan multikunci.
Urutan indeks
Urutan dan arah pengurutan setiap kolom menentukan indeks secara unik. Misalnya, indeks berikut adalah dua indeks yang berbeda dan tidak dapat dipertukarkan:
Koleksi | Kolom |
---|---|
cities | country (ascending), population (descending) |
cities | population (descending), country (ascending), |
Saat membuat indeks untuk mendukung kueri, sertakan kolom dalam urutan yang sama dengan kueri Anda.
Kepadatan indeks
Secara default, entri indeks menyimpan data dari semua dokumen dalam koleksi. Hal ini dikenal sebagai indeks non-sebar. Entri indeks akan ditambahkan untuk dokumen, terlepas dari apakah dokumen berisi kolom yang ditentukan dalam indeks atau tidak. Kolom yang tidak ada diperlakukan sebagai memiliki nilai NULL saat membuat entri indeks. Untuk mengubah perilaku ini, Anda dapat menentukan indeks sebagai indeks jarang.
Indeks jarang
Indeks jarang hanya mengindeks dokumen dalam koleksi yang berisi nilai (termasuk null) untuk setidaknya satu kolom yang diindeks. Indeks jarang mengurangi biaya penyimpanan dan dapat meningkatkan performa.
Indeks multikunci untuk nilai array
Jika membuat indeks pada kolom yang berisi nilai array, Anda harus membuat indeks multikunci. Indeks reguler tidak dapat mengindeks nilai array. Indeks multikunci mendukung hingga satu kolom array dalam definisi indeks dan dapat digunakan untuk operasi yang menjelajahi nilai array.
Hanya gunakan indeks multikunci jika Anda tahu bahwa Anda perlu mengindeks nilai array. Indeks reguler memiliki keunggulan saat memproses kueri. Misalnya, indeks reguler dapat memfilter nilai dalam rentang secara lebih efisien.
Situasi berikut menyebabkan error saat menggunakan nilai array dan indeks multikunci:
- Operasi mencoba menambahkan nilai array ke kolom yang diindeks oleh indeks reguler. Untuk menambahkan nilai array, Anda harus menghapus indeks reguler yang ada di kolom tersebut, dan membuatnya ulang sebagai indeks multikunci.
- Anda mencoba membuat indeks reguler pada kolom yang berisi nilai array. Anda harus membuat indeks multikunci atau menghapus nilai array.
- Operasi mencoba mengindeks beberapa kolom dengan nilai array. Anda tidak dapat memiliki lebih dari satu kolom dengan nilai array dalam indeks multikunci. Untuk melanjutkan, ubah model data atau definisi indeks Anda.
- Anda mencoba membuat indeks multikunci dengan dua jalur kolom yang memiliki awalan
umum seperti
users.posts
danusers.zip
.
Memecahkan masalah error pembuatan indeks
Anda mungkin mengalami error dalam pembuatan indeks saat mengelola indeks. Operasi pengindeksan dapat gagal jika database mengalami masalah dengan data. Operasi pengindeksan dapat gagal karena alasan berikut:
- Anda telah mencapai batas indeks. Misalnya, operasi mungkin telah mencapai jumlah entri indeks maksimum per dokumen. Jika pembuatan indeks gagal, Anda akan melihat pesan error. Jika Anda belum mencapai batas indeks, coba lagi operasi indeks.
- Indeks multikunci diperlukan. Setidaknya salah satu kolom yang diindeks berisi nilai array. Untuk melanjutkan, Anda harus menggunakan indeks multikunci atau menghapus nilai array.
- Operasi mencoba mengindeks beberapa kolom dengan nilai array. Anda tidak dapat memiliki lebih dari satu kolom dengan nilai array dalam indeks multikunci. Untuk melanjutkan, ubah model data atau definisi indeks Anda.
Langkah berikutnya
- Pelajari cara membuat dan mengelola indeks