Indeks merupakan faktor penting dalam kinerja database. Sama seperti indeks buku yang memetakan topik dalam buku ke nomor halaman, indeks database memetakan item dalam database ke lokasinya di database. Saat Anda mengirim kueri ke database, database dapat menggunakan indeks untuk mencari lokasi item yang Anda minta dengan cepat.
Halaman ini menjelaskan dua jenis indeks yang digunakan Cloud Firestore, indeks kolom tunggal dan indeks gabungan .
Indeks di balik setiap kueri
Jika tidak ada indeks untuk kueri, sebagian besar basis data merayapi isinya item demi item, proses lambat yang semakin melambat saat basis data tumbuh. Cloud Firestore menjamin kinerja kueri yang tinggi dengan menggunakan indeks untuk semua kueri. Akibatnya, performa kueri bergantung pada ukuran kumpulan hasil dan bukan pada jumlah item dalam database.
Lebih sedikit manajemen indeks, lebih banyak pengembangan aplikasi
Cloud Firestore menyertakan fitur yang mengurangi jumlah waktu yang Anda perlukan untuk mengelola indeks. Indeks yang diperlukan untuk kueri paling dasar dibuat secara otomatis untuk Anda. Saat Anda menggunakan dan menguji aplikasi, Cloud Firestore membantu Anda mengidentifikasi dan membuat indeks tambahan yang diperlukan aplikasi Anda.
Jenis indeks
Cloud Firestore menggunakan dua jenis indeks: kolom tunggal dan komposit . Selain jumlah bidang yang diindeks, indeks bidang tunggal dan gabungan berbeda dalam cara Anda mengelolanya.
Indeks bidang tunggal
Indeks bidang tunggal menyimpan pemetaan terurut dari semua dokumen dalam kumpulan yang berisi bidang tertentu. Setiap entri dalam indeks bidang tunggal mencatat nilai dokumen untuk bidang tertentu dan lokasi dokumen dalam database. Cloud Firestore menggunakan indeks ini untuk melakukan banyak kueri dasar. Anda mengelola indeks bidang tunggal dengan mengonfigurasi pengaturan pengindeksan otomatis dan pengecualian indeks database Anda.
Pengindeksan otomatis
Secara default, Cloud Firestore secara otomatis mempertahankan indeks kolom tunggal untuk setiap kolom dalam dokumen dan setiap subkolom dalam peta. Cloud Firestore menggunakan setelan default berikut untuk indeks kolom tunggal:
Untuk setiap kolom non-array dan non-peta, Cloud Firestore menentukan dua indeks kolom tunggal cakupan koleksi , satu dalam mode menaik dan satu lagi dalam mode menurun.
Untuk setiap kolom peta, Cloud Firestore membuat satu indeks menaik lingkup koleksi dan satu indeks menurun untuk setiap subkolom non-array dan non-peta di peta.
Untuk setiap kolom array dalam dokumen, Cloud Firestore membuat dan memelihara indeks array-contains lingkup koleksi.
Indeks bidang tunggal dengan cakupan grup koleksi tidak dipertahankan secara default.
Pengecualian indeks kolom tunggal
Anda dapat mengecualikan bidang dari setelan pengindeksan otomatis dengan membuat pengecualian indeks bidang tunggal. Pengecualian pengindeksan mengesampingkan pengaturan indeks otomatis di seluruh basis data. Pengecualian dapat mengaktifkan indeks bidang tunggal yang pengaturan pengindeksan otomatis Anda akan menonaktifkan atau menonaktifkan indeks bidang tunggal yang sebaliknya akan diaktifkan oleh pengindeksan otomatis. Untuk kasus di mana pengecualian dapat bermanfaat, lihat praktik terbaik pengindeksan .
Jika Anda membuat pengecualian indeks bidang tunggal untuk bidang peta, subbidang peta akan mewarisi setelan tersebut. Namun, Anda dapat menentukan pengecualian indeks bidang tunggal untuk subbidang tertentu. Jika Anda menghapus pengecualian untuk subbidang, subbidang akan mewarisi pengaturan pengecualian induknya, jika ada, atau pengaturan seluruh database jika tidak ada pengecualian induk.
Untuk membuat dan mengelola pengecualian indeks kolom tunggal, lihat Mengelola Indeks di Cloud Firestore .
Indeks komposit
Indeks komposit menyimpan pemetaan terurut dari semua dokumen dalam koleksi, berdasarkan daftar bidang yang diurutkan untuk diindeks.
Cloud Firestore menggunakan indeks komposit untuk mendukung kueri yang belum didukung oleh indeks kolom tunggal.
Cloud Firestore tidak secara otomatis membuat indeks komposit seperti yang dilakukan untuk indeks kolom tunggal karena banyaknya kemungkinan kombinasi kolom. Sebagai gantinya, Cloud Firestore membantu Anda mengidentifikasi dan membuat indeks komposit yang diperlukan saat Anda mem-build aplikasi.
Jika Anda mencoba kueri di atas tanpa membuat indeks yang diperlukan terlebih dahulu, Cloud Firestore akan menampilkan pesan error berisi link yang dapat Anda ikuti untuk membuat indeks yang hilang. Ini terjadi setiap kali Anda mencoba kueri yang tidak didukung oleh indeks. Anda juga dapat menentukan dan mengelola indeks komposit secara manual menggunakan konsol atau menggunakan Firebase CLI . Untuk informasi selengkapnya tentang membuat dan mengelola indeks gabungan, lihat Mengelola Indeks .
Mode indeks dan cakupan kueri
Anda mengonfigurasi indeks bidang tunggal dan gabungan secara berbeda, tetapi keduanya mengharuskan Anda mengonfigurasi mode indeks dan cakupan kueri untuk indeks Anda.
Mode indeks
Saat Anda menentukan indeks, Anda memilih mode indeks untuk setiap bidang yang diindeks. Setiap mode indeks bidang mendukung klausa kueri tertentu pada bidang tersebut. Anda dapat memilih dari mode indeks berikut:
Modus indeks | Keterangan |
---|---|
atas | Mendukung < , <= , == , >= , > , != , in , dan not-in , klausa kueri pada bidang dan mendukung hasil penyortiran dalam urutan menaik berdasarkan nilai bidang ini. |
Menurun | Mendukung < , <= , == , >= , > , != , in , dan klausa kueri not-in pada bidang dan mendukung hasil penyortiran dalam urutan menurun berdasarkan nilai bidang ini. |
Array‑berisi | Mendukung klausa permintaan array-contains dan array-contains-any di lapangan. |
Cakupan kueri
Setiap indeks dicakup ke koleksi atau grup koleksi. Ini dikenal sebagai cakupan kueri indeks:
- Cakupan koleksi
- Cloud Firestore membuat indeks dengan cakupan koleksi secara default. Indeks ini mendukung kueri yang mengembalikan hasil dari satu koleksi.
- Lingkup grup koleksi
- Grup koleksi mencakup semua koleksi dengan ID koleksi yang sama. Untuk menjalankan kueri grup koleksi yang mengembalikan hasil yang difilter atau diurutkan dari grup koleksi, Anda harus membuat indeks yang sesuai dengan cakupan grup koleksi.
Pengurutan default dan kolom __name__
Selain mengurutkan dokumen berdasarkan mode indeks yang ditentukan untuk setiap bidang (naik atau turun), indeks menerapkan penyortiran akhir berdasarkan bidang __name__
dari setiap dokumen. Nilai bidang __name__
disetel ke jalur dokumen lengkap. Ini berarti bahwa dokumen dalam kumpulan hasil dengan nilai bidang yang sama diurutkan berdasarkan jalur dokumen.
Secara default, bidang __name__
diurutkan dengan arah yang sama dengan bidang yang terakhir diurutkan dalam definisi indeks. Sebagai contoh:
Koleksi | Bidang diindeks | Cakupan kueri |
---|---|---|
kota | nama __name__ | atas, Koleksi |
kota | status __name__ | , Koleksi |
kota | negara __name__ | , populasi , Koleksi |
Untuk mengurutkan hasil berdasarkan arah __name__
non-default, Anda perlu membuat index.
Contoh pengindeksan
Dengan membuat indeks kolom tunggal secara otomatis untuk Anda, Cloud Firestore memungkinkan aplikasi Anda mendukung kueri database paling dasar dengan cepat. Indeks bidang tunggal memungkinkan Anda melakukan kueri sederhana berdasarkan nilai bidang dan pembanding <
, <=
, ==
, >=
, >
, dan in
. Untuk bidang array, mereka memungkinkan Anda untuk melakukan kueri array-contains
dan array-contains-any
.
Sebagai ilustrasi, periksa contoh berikut dari sudut pandang pembuatan indeks. Cuplikan berikut membuat beberapa dokumen city
dalam kumpulan cities
dan menyetel kolom name
, state
, country
, capital
, population
, dan tags
untuk setiap dokumen:
Web
var citiesRef = db.collection("cities"); citiesRef.doc("SF").set({ name: "San Francisco", state: "CA", country: "USA", capital: false, population: 860000, regions: ["west_coast", "norcal"] }); citiesRef.doc("LA").set({ name: "Los Angeles", state: "CA", country: "USA", capital: false, population: 3900000, regions: ["west_coast", "socal"] }); citiesRef.doc("DC").set({ name: "Washington, D.C.", state: null, country: "USA", capital: true, population: 680000, regions: ["east_coast"] }); citiesRef.doc("TOK").set({ name: "Tokyo", state: null, country: "Japan", capital: true, population: 9000000, regions: ["kanto", "honshu"] }); citiesRef.doc("BJ").set({ name: "Beijing", state: null, country: "China", capital: true, population: 21500000, regions: ["jingjinji", "hebei"] });
Dengan asumsi setelan pengindeksan otomatis default, Cloud Firestore memperbarui satu indeks kolom tunggal naik per kolom non-array, satu indeks kolom tunggal turun per kolom non-array, dan satu indeks kolom tunggal berisi array untuk kolom array. Setiap baris dalam tabel berikut mewakili entri dalam indeks bidang tunggal:
Koleksi | Bidang diindeks | Cakupan kueri |
---|---|---|
kota | nama | Koleksi |
kota | status | Koleksi |
kota | negara | Koleksi |
kota | modal | Koleksi |
kota | populasi | Koleksi |
kota | nama | Koleksi |
kota | status | Koleksi |
kota | negara | Koleksi |
kota | modal | Koleksi |
kota | populasi | Koleksi |
kota | array-contains daerah | Koleksi |
Kueri didukung oleh indeks bidang tunggal
Dengan menggunakan indeks bidang tunggal yang dibuat secara otomatis ini, Anda dapat menjalankan kueri sederhana seperti berikut:
Web
const stateQuery = citiesRef.where("state", "==", "CA"); const populationQuery = citiesRef.where("population", "<", 100000); const nameQuery = citiesRef.where("name", ">=", "San Francisco");
Anda juga dapat in
dan menggabungkan kueri kesetaraan ( ==
):
Web
citiesRef.where('country', 'in', ["USA", "Japan", "China"]) // Compound equality queries citiesRef.where("state", "==", "CO").where("name", "==", "Denver") citiesRef.where("country", "==", "USA") .where("capital", "==", false) .where("state", "==", "CA") .where("population", "==", 860000)
Jika Anda perlu menjalankan kueri gabungan yang menggunakan perbandingan rentang ( <
, <=
, >
, atau >=
) atau jika Anda perlu mengurutkan berdasarkan bidang yang berbeda, Anda harus membuat indeks gabungan untuk kueri tersebut.
Indeks array-contains
memungkinkan Anda untuk mengkueri bidang larik regions
:
Web
citiesRef.where("regions", "array-contains", "west_coast") // array-contains-any and array-contains use the same indexes citiesRef.where("regions", "array-contains-any", ["west_coast", "east_coast"])
Kueri didukung oleh indeks komposit
Cloud Firestore menggunakan indeks komposit untuk mendukung kueri gabungan yang belum didukung oleh indeks kolom tunggal. Misalnya, Anda memerlukan indeks gabungan untuk kueri berikut:
Web
citiesRef.where("country", "==", "USA").orderBy("population", "asc") citiesRef.where("country", "==", "USA").where("population", "<", 3800000) citiesRef.where("country", "==", "USA").where("population", ">", 690000) // in and == clauses use the same index citiesRef.where("country", "in", ["USA", "Japan", "China"]) .where("population", ">", 690000)
Kueri ini memerlukan indeks komposit di bawah ini. Karena kueri menggunakan persamaan ( ==
atau in
) untuk bidang country
, Anda dapat menggunakan mode indeks naik atau turun untuk bidang ini. Secara default, klausa ketidaksetaraan menerapkan urutan naik berdasarkan bidang dalam klausa ketidaksetaraan.
Koleksi | Bidang diindeks | Cakupan kueri |
---|---|---|
kota | negara | (atau ), populasiKoleksi |
Untuk menjalankan kueri yang sama tetapi dengan urutan menurun, Anda memerlukan indeks komposit tambahan dalam arah menurun untuk population
:
Web
citiesRef.where("country", "==", "USA").orderBy("population", "desc") citiesRef.where("country", "==", "USA") .where("population", "<", 3800000) .orderBy("population", "desc") citiesRef.where("country", "==", "USA") .where("population", ">", 690000) .orderBy("population", "desc") citiesRef.where("country", "in", ["USA", "Japan", "China"]) .where("population", ">", 690000) .orderBy("population", "desc")
Koleksi | Bidang diindeks | Cakupan kueri |
---|---|---|
kota | negara | , populasiKoleksi |
kota | negara | , populasiKoleksi |
Anda juga perlu membuat indeks komposit untuk menggabungkan permintaan array-contains
atau array-contains-any
dengan klausa tambahan.
Web
citiesRef.where("regions", "array-contains", "east_coast") .where("capital", "==", true) // array-contains-any and array-contains use the same index citiesRef.where("regions", "array-contains-any", ["west_coast", "east_coast"]) .where("capital", "==", true)
Koleksi | Bidang diindeks | Cakupan kueri |
---|---|---|
kota | array-berisi tag, huruf kapital | (atau ).Koleksi |
Kueri didukung oleh indeks grup koleksi
Untuk mendemonstrasikan indeks dengan cakupan grup koleksi, bayangkan Anda menambahkan sub-koleksi landmarks
ke beberapa dokumen city
:
Web
var citiesRef = db.collection("cities"); citiesRef.doc("SF").collection("landmarks").doc().set({ name: "Golden Gate Bridge", category : "bridge" }); citiesRef.doc("SF").collection("landmarks").doc().set({ name: "Golden Gate Park", category : "park" }); citiesRef.doc("DC").collection("landmarks").doc().set({ name: "National Gallery of Art", category : "museum" }); citiesRef.doc("DC").collection("landmarks").doc().set({ name: "National Mall", category : "park" });
Menggunakan indeks bidang tunggal berikut dengan cakupan koleksi, Anda dapat mengkueri koleksi landmarks
kota tunggal berdasarkan bidang category
:
Koleksi | Bidang diindeks | Cakupan kueri |
---|---|---|
landmark | kategori | (atau ).Koleksi |
Web
citiesRef.doc("SF").collection("landmarks").where("category", "==", "park") citiesRef.doc("SF").collection("landmarks").where("category", "in", ["park", "museum"])
Sekarang, bayangkan Anda tertarik untuk menanyakan bangunan terkenal di semua kota. Untuk menjalankan kueri ini pada grup koleksi yang terdiri dari semua koleksi landmarks
, Anda harus mengaktifkan indeks bidang tunggal landmarks
dengan cakupan grup koleksi:
Koleksi | Bidang diindeks | Cakupan kueri |
---|---|---|
landmark | kategori | (atau ).Grup koleksi |
Dengan mengaktifkan indeks ini, Anda dapat mengkueri grup koleksi landmarks
:
Web
var landmarksGroupRef = db.collectionGroup("landmarks"); landmarksGroupRef.where("category", "==", "park") landmarksGroupRef.where("category", "in", ["park", "museum"])
Untuk menjalankan kueri grup koleksi yang mengembalikan hasil yang difilter atau diurutkan, Anda harus mengaktifkan indeks gabungan atau kolom tunggal yang sesuai dengan cakupan grup koleksi. Kueri grup kumpulan yang tidak memfilter atau mengurutkan hasil, bagaimanapun, tidak memerlukan definisi indeks tambahan apa pun.
Misalnya, Anda dapat menjalankan kueri grup koleksi berikut tanpa mengaktifkan indeks tambahan:
Web
db.collectionGroup("landmarks").get()
Entri indeks
Indeks yang dikonfigurasi proyek Anda dan struktur dokumen menentukan jumlah entri indeks untuk dokumen. Entri indeks dihitung terhadap batas jumlah entri indeks .
Contoh berikut menunjukkan entri indeks dokumen.
Dokumen
/cities/SF
city_name : "San Francisco"
temperatures : {summer: 67, winter: 55}
neighborhoods : ["Mission", "Downtown", "Marina"]
Indeks Bidang Tunggal
- ASC nama_kota
- nama_kota DESC
- suhu.musim panas ASC
- suhu.musim panas DESC
- suhu. musim dingin ASC
- suhu.musim dingin DESC
- Berisi Array lingkungan (ASC dan DESC)
Indeks komposit
- city_name ASC, lingkungan ARRAY
- nama_kota DESC, lingkungan ARRAY
Entri indeks
Konfigurasi pengindeksan ini menghasilkan 18 entri indeks berikut untuk dokumen:
Indeks | Data yang diindeks |
---|---|
Entri indeks bidang tunggal | |
ASC nama_kota | nama_kota: "San Francisco" |
nama_kota DESC | nama_kota: "San Francisco" |
suhu.musim panas ASC | suhu. musim panas: 67 |
suhu.musim panas DESC | suhu. musim panas: 67 |
suhu.musim dingin ASC | suhu. musim dingin: 55 |
suhu.musim dingin DESC | suhu. musim dingin: 55 |
lingkungan Array Berisi ASC | lingkungan: "Misi" |
lingkungan Array Berisi DESC | lingkungan: "Misi" |
lingkungan Array Berisi ASC | lingkungan: "Pusat kota" |
lingkungan Array Berisi DESC | lingkungan: "Pusat kota" |
lingkungan Array Berisi ASC | lingkungan: "Marina" |
lingkungan Array Berisi DESC | lingkungan: "Marina" |
Entri indeks komposit | |
city_name ASC, lingkungan ARRAY | nama_kota: "San Francisco", lingkungan sekitar: "Misi" |
city_name ASC, lingkungan ARRAY | nama_kota: "San Francisco", lingkungan sekitar: "Pusat kota" |
city_name ASC, lingkungan ARRAY | nama_kota: "San Francisco", lingkungan sekitar: "Marina" |
nama_kota DESC, lingkungan ARRAY | nama_kota: "San Francisco", lingkungan sekitar: "Misi" |
nama_kota DESC, lingkungan ARRAY | nama_kota: "San Francisco", lingkungan sekitar: "Pusat kota" |
nama_kota DESC, lingkungan ARRAY | nama_kota: "San Francisco", lingkungan sekitar: "Marina" |
Indeks dan harga
Indeks berkontribusi pada biaya penyimpanan aplikasi Anda. Untuk selengkapnya tentang cara menghitung ukuran penyimpanan untuk indeks, lihat Ukuran entri indeks .
Mengambil keuntungan dari penggabungan indeks
Meskipun Cloud Firestore menggunakan indeks untuk setiap kueri, tidak selalu diperlukan satu indeks per kueri. Untuk kueri dengan beberapa klausa kesetaraan ( ==
) dan, secara opsional, klausa orderBy
, Cloud Firestore dapat menggunakan kembali indeks yang ada. Cloud Firestore dapat menggabungkan indeks untuk filter kesetaraan sederhana guna membangun indeks gabungan yang diperlukan untuk kueri kesetaraan yang lebih besar.
Anda dapat mengurangi biaya pengindeksan dengan mengidentifikasi situasi di mana Anda dapat memanfaatkan penggabungan indeks. Misalnya, bayangkan koleksi restaurants
untuk aplikasi rating restoran:
name : "Burger Thyme"
category : "burgers"
city : "San Francisco"
editors_pick : true
star_rating : 4
Sekarang, bayangkan aplikasi ini menggunakan kueri seperti di bawah ini. Perhatikan bahwa aplikasi menggunakan kombinasi klausa kesetaraan untuk category
, city
, dan editors_pick
sambil selalu mengurutkan berdasarkan star_rating
naik :
Web
db.collection("restaurants").where("category", "==", "burgers") .orderBy("star_rating") db.collection("restaurants").where("city", "==", "San Francisco") .orderBy("star_rating") db.collection("restaurants").where("category", "==", "burgers") .where("city", "==", "San Francisco") .orderBy("star_rating") db.collection("restaurants").where("category", "==", "burgers") .where("city", "==" "San Francisco") .where("editors_pick", "==", true ) .orderBy("star_rating")
Anda dapat membuat indeks untuk setiap kueri:
Koleksi | Bidang diindeks | Cakupan kueri |
---|---|---|
restoran | kategori | atas, peringkat_bintang atasKoleksi |
restoran | kota | atas, peringkat_bintang atasKoleksi |
restoran | kategori | atas, kota atas, peringkat_bintang atasKoleksi |
restoran | kategori | atas, kota atas, atas editor_pick, atas peringkat_bintangKoleksi |
Sebagai solusi yang lebih baik, Anda dapat mengurangi jumlah indeks dengan memanfaatkan kemampuan Cloud Firestore untuk menggabungkan indeks untuk klausa kesetaraan:
Koleksi | Bidang diindeks | Cakupan kueri |
---|---|---|
restoran | kategori | atas, peringkat_bintang atasKoleksi |
restoran | kota | atas, peringkat_bintang atasKoleksi |
restoran | editor_pick, star_rating | Koleksi |
Kumpulan indeks ini tidak hanya lebih kecil, tetapi juga mendukung kueri tambahan:
Web
db.collection("restaurants").where("editors_pick", "==", true) .orderBy("star_rating")
Batas pengindeksan
Batasan berikut berlaku untuk indeks. Untuk semua kuota dan batas, lihat Kuota dan Batas .
Membatasi | Detail |
---|---|
Jumlah maksimum indeks komposit untuk database | 200 Anda dapat menghubungi dukungan untuk meminta peningkatan batas ini. |
Jumlah maksimum konfigurasi bidang tunggal untuk database | 200 Sebanyak 200 konfigurasi tingkat lapangan diperbolehkan. Satu konfigurasi bidang dapat berisi beberapa konfigurasi untuk bidang yang sama. Misalnya, pengecualian pengindeksan kolom tunggal dan kebijakan TTL pada kolom yang sama dihitung sebagai satu konfigurasi kolom menuju batas. |
Jumlah maksimum entri indeks untuk setiap dokumen | 40.000 Jumlah entri indeks adalah jumlah dari yang berikut untuk sebuah dokumen:
Untuk melihat bagaimana Cloud Firestore mengubah dokumen dan sekumpulan indeks menjadi entri indeks, lihat contoh jumlah entri indeks ini . |
Jumlah maksimum bidang dalam indeks gabungan | 100 |
Ukuran maksimum entri indeks | 7,5 KiB Untuk melihat cara Cloud Firestore menghitung ukuran entri indeks, lihat ukuran entri indeks . |
Jumlah maksimum ukuran entri indeks dokumen | 8 MiB Ukuran total adalah jumlah dari berikut ini untuk sebuah dokumen: |
Ukuran maksimum nilai bidang yang diindeks | 1500 byte Nilai kolom lebih dari 1500 byte akan dipotong. Kueri yang melibatkan nilai bidang terpotong dapat mengembalikan hasil yang tidak konsisten. |
Mengindeks praktik terbaik
Untuk sebagian besar aplikasi, Anda dapat mengandalkan pengindeksan otomatis dan tautan pesan kesalahan untuk mengelola indeks Anda. Namun, Anda mungkin ingin menambahkan pengecualian kolom tunggal dalam kasus berikut:
Kasus | Keterangan |
---|---|
Bidang string besar | Jika Anda memiliki bidang string yang sering menyimpan nilai string panjang yang tidak digunakan untuk kueri, Anda dapat menghemat biaya penyimpanan dengan mengecualikan bidang dari pengindeksan. |
Tingkat penulisan tinggi ke koleksi yang berisi dokumen dengan nilai berurutan | Jika Anda mengindeks bidang yang bertambah atau berkurang secara berurutan di antara dokumen dalam koleksi, seperti stempel waktu, maka tingkat penulisan maksimum ke koleksi tersebut adalah 500 penulisan per detik. Jika Anda tidak membuat kueri berdasarkan bidang dengan nilai berurutan, Anda dapat mengecualikan bidang dari pengindeksan untuk melewati batas ini. Dalam kasus penggunaan IoT dengan tingkat penulisan yang tinggi, misalnya, koleksi yang berisi dokumen dengan bidang stempel waktu mungkin mendekati batas 500 penulisan per detik. |
bidang TTL | Jika Anda menggunakan kebijakan TTL (time-to-live) , perhatikan bahwa kolom TTL harus berupa stempel waktu. Pengindeksan pada bidang TTL diaktifkan secara default dan dapat memengaruhi kinerja pada tingkat lalu lintas yang lebih tinggi. Sebagai praktik terbaik, tambahkan pengecualian kolom tunggal untuk kolom TTL Anda. |
Array besar atau bidang peta | Larik besar atau bidang peta dapat mendekati batas 40.000 entri indeks per dokumen. Jika Anda tidak membuat kueri berdasarkan larik besar atau bidang peta, Anda harus mengecualikannya dari pengindeksan. |