官术网_书友最值得收藏!

There's more...

Compound indexes, if used smartly, can dramatically reduce your document seek times. For example, let's assume our application had a view that only required us to show a list of names in a city. A traditional approach would be to run a find query and get the list of documents and send them to the application's view. However, we know that other fields in the document are not needed for this view. Then, by having a compound index on city and first_name with the addition of field projection, we simply send the index values down to the application that is:

db.mockdata.find({city:'Boston', first_name:'Sara'}, {city:1, first_name:1, _id:0})

By doing this, not only do we leverage the speed of the index but we negate the need to fetch the non-indexed keys. Another term used for this is a covered query and it can improve our applications significantly!

Also, compound indexes allow us to use the index for the leftmost key. In our example, if we were to run db.mockdata.find({city:'Boston'}), then the result would be fetched from the index. However, if we were to search on the first_name that is, db.mockdata.find({first_name:'Sara'}), the server would do a full collection scan and fetch the result. I would encourage you to run the preceding queries chained with the explain() function and see the details yourself.

主站蜘蛛池模板: 老河口市| 且末县| 南皮县| 汾西县| 拜泉县| 儋州市| 乐安县| 察隅县| 淮阳县| 崇州市| 德昌县| 辽源市| 镇安县| 陇南市| 永城市| 陈巴尔虎旗| 乐至县| 林周县| 涿州市| 屏东县| 金山区| 会理县| 扎赉特旗| 攀枝花市| 贡嘎县| 溧水县| 宜宾县| 甘德县| 平定县| 遂宁市| 拉萨市| 云南省| 嘉峪关市| 霍城县| 鹿邑县| 阳信县| 长岭县| 历史| 晋城| 雅安市| 兴业县|