MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Apa cara yang benar untuk Mengindeks di MongoDB ketika ada kombinasi besar bidang?

Umumnya, indeks hanya berguna jika lebih dari selektif bidang. Artinya jumlah dokumen yang memiliki nilai tertentu kecil relatif terhadap jumlah keseluruhan dokumen.

Apa arti "kecil" bervariasi pada kumpulan data dan kueri. Selektivitas 1% cukup aman ketika memutuskan apakah suatu indeks masuk akal. Jika ada nilai tertentu dalam, katakanlah, 10% dokumen, melakukan pemindaian tabel mungkin lebih efisien daripada menggunakan indeks pada bidang masing-masing.

Dengan mengingat hal itu, beberapa bidang Anda akan selektif dan beberapa tidak akan. Misalnya, saya menduga pemfilteran dengan "OK" tidak akan terlalu selektif. Anda dapat menghilangkan bidang non-selektif dari pertimbangan pengindeksan - jika seseorang menginginkan semua pesanan yang "OK" tanpa kondisi lain, mereka akhirnya akan melakukan pemindaian tabel. Jika seseorang menginginkan pesanan yang "OK" dan memiliki ketentuan lain, indeks apa pun yang berlaku untuk ketentuan lain akan digunakan.

Sekarang setelah Anda memiliki bidang selektif (atau setidaknya agak selektif), pertimbangkan kueri apa yang populer dan selektif. Misalnya, mungkin merek+tipe akan menjadi kombinasi seperti itu. Anda dapat menambahkan indeks gabungan yang cocok dengan kueri populer yang Anda harapkan selektif.

Sekarang, apa yang terjadi jika seseorang memfilter berdasarkan merek saja? Ini bisa selektif atau tidak tergantung pada data. Jika Anda sudah memiliki indeks gabungan pada merek+jenis, Anda akan menyerahkannya ke database untuk menentukan apakah kueri merek saja lebih efisien untuk dipenuhi melalui indeks merek+jenis atau melalui pemindaian koleksi.

Lanjutkan dengan cara ini dengan kueri dan bidang populer lainnya.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB pada mesin Windows 7:Tidak ada koneksi yang dapat dibuat

  2. Bagaimana cara mendapatkan kembali nilai baru setelah pembaruan dalam array yang disematkan?

  3. Tarik entri dari array melalui Meteor

  4. Bagaimana cara menambah bidang di mongodb?

  5. Pencarian Teks Penuh dan Sebagian MongoDB