mongodb 联合索引和单个字段索引性能那个好些。
为情所困
为情所困 2017-05-02 09:22:03
0
1
813

现在遇到一个性能问题,解决办法就是给字段加索引,现在纠结的是字段组合索引还是单个索引查询效率问题?

场景
现在查询字段是parentId,key ,两个字段同时查询。

现在见索引的方案是
1 分别给 parentId,key添加索引

2 建一个组合索引 {parentId:1,key:1}这样的方式:

这两个查询性能是不是差不多啊?

求证

为情所困
为情所困

membalas semua(1)
伊谢尔伦

Dari segi kecekapan indeks, indeks bersama pasti lebih cekap Dalam banyak kes, jika anda menggunakan berbilang medan untuk membuat pertanyaan, anda harus mempertimbangkan untuk menggunakan indeks bersama.
Tetapi perkara-perkara tidak sepenuhnya mutlak, dan overhed pengindeksan juga mesti diambil kira.
Mengambil syarat anda sebagai contoh, dengan mengandaikan bahawa key boleh menentukan rekod secara unik, adakah tidak perlu menambah parentId?
Mengundur selangkah, walaupun key tidak dapat menentukan satu secara unik, jika ia dapat menentukan keputusan yang ditetapkan dalam julat kecil tertentu, seperti 5 rekod atau 10 rekod, maka parentId syarat ini tidak lebih daripada ini 10 rekod Imbas rekod sekali lagi untuk mencari rekod yang sesuai Berbanding dengan penulisan, penyimpanan dan overhed memori yang disebabkan oleh menambahnya pada indeks, saya mungkin memilih untuk tidak memasukkannya ke dalam indeks bersama sama sekali.
Lebih banyak rekod keadaan boleh ditapis, lebih baik "selektiviti"nya. Dalam keadaan biasa, apabila kita membina indeks, kita harus meletakkan keadaan dengan selektiviti yang lebih baik di hadapan dan keadaan dengan selektiviti yang lemah di belakang. Jika ia cukup teruk, jangan biarkan ia masuk.
Ini sebenarnya adalah keseimbangan antara masa dan ruang. Keadaan dimasukkan ke dalam indeks menjimatkan masa (termasuk masa CPU, masa pertanyaan) dan ruang (termasuk ruang penyimpanan, keadaan ruang memori tidak dimasukkan ke dalam masa kos indeks dan menjimatkan ruang); Selalunya kita menjangkakan yang pertama Bila hendak memilih yang terakhir bergantung pada penilaian anda sendiri tentang situasi sebenar.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan