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

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.

主站蜘蛛池模板: 益阳市| 甘孜| 丹江口市| 隆安县| 海兴县| 潼关县| 玉树县| 项城市| 得荣县| 瑞金市| 新疆| 赣州市| 抚州市| 芮城县| 航空| 嘉善县| 浦江县| 阿拉善左旗| 长岛县| 荥阳市| 临澧县| 渭源县| 黎城县| 安乡县| 桦甸市| 涿鹿县| 勐海县| 无为县| 福贡县| 吉木乃县| 霍山县| 永和县| 新建县| 淳化县| 牡丹江市| 东光县| 上虞市| 遵义市| 哈尔滨市| 南江县| 始兴县|