Mengapa indeks
Pahami dua poin kunci.
- Meskipun indeks lebih baik daripada tidak ada indeks, indeks yang benar jauh lebih baik daripada keduanya.
- MongoDB hanya akan menggunakan satu indeks per kueri, membuat indeks gabungan dengan bidang yang tepat mengurutkan apa yang mungkin ingin Anda gunakan.
Indeks tidak gratis. Mereka mengambil memori, dan memberlakukan penalti kinerja saat melakukan penyisipan, pembaruan, dan penghapusan. Biasanya pencapaian kinerja dapat diabaikan (terutama dibandingkan dengan perolehan dalam kinerja baca), tetapi itu tidak berarti bahwa kami tidak bisa pintar-pintar membuat indeks kami.
Bagaimana Indeks
Mengidentifikasi kelompok bidang apa yang harus diindeks bersama adalah tentang memahami kueri yang Anda jalankan. Urutan bidang yang digunakan untuk membuat indeks Anda sangat penting. Kabar baiknya adalah, jika Anda salah melakukan order, indeks tidak akan digunakan sama sekali, jadi akan mudah dikenali dengan penjelasan.
Mengapa Menyortir
Kueri Anda mungkin perlu Diurutkan. Namun pengurutan bisa menjadi operasi yang mahal, jadi penting untuk memperlakukan bidang yang Anda sortir seperti bidang yang Anda kueri. Jadi akan lebih cepat kalau sudah index. Namun ada satu perbedaan penting, bidang yang Anda sortir harus merupakan bidang terakhir dalam indeks Anda. Satu-satunya pengecualian untuk aturan ini adalah jika bidang juga merupakan bagian dari kueri Anda, maka aturan harus-menjadi-terakhir tidak berlaku.
Bagaimana Menyortir
Anda dapat menentukan urutan pada semua kunci indeks atau subset; namun, kunci sortir harus terdaftar dalam urutan yang sama seperti yang muncul di indeks. Misalnya, pola kunci indeks {a: 1, b: 1} dapat mendukung pengurutan di {a: 1, b: 1} tetapi tidak di {b: 1, a: 1}.
Pengurutan harus menentukan arah pengurutan yang sama (yaitu naik / turun) untuk semua kuncinya sebagai pola kunci indeks atau menentukan arah pengurutan terbalik untuk semua kuncinya sebagai pola kunci indeks. Misalnya, pola kunci indeks {a: 1, b: 1} dapat mendukung pengurutan pada {a: 1, b: 1} dan {a: -1, b: -1} tetapi tidak pada {a: -1 , b: 1}.
Misalkan ada indeks ini:
{ a: 1 }
{ a: 1, b: 1 }
{ a: 1, b: 1, c: 1 }
Example Index Used
db.data.find().sort( { a: 1 } ) { a: 1 }
db.data.find().sort( { a: -1 } ) { a: 1 }
db.data.find().sort( { a: 1, b: 1 } ) { a: 1, b: 1 }
db.data.find().sort( { a: -1, b: -1 } ) { a: 1, b: 1 }
db.data.find().sort( { a: 1, b: 1, c: 1 } ) { a: 1, b: 1, c: 1 }
db.data.find( { a: { $gt: 4 } } ).sort( { a: 1, b: 1 } ) { a: 1, b: 1 }
1, 3, 2, 6, 5, 4, 7
?