mongodb性能调优 1.从慢查询分析索引 2.掌握索引最左匹配原则!!!
案例:top one: 所以不合适使用最左匹配原则。top three: 值是唯一的但是没有索引。解决后:总结:----------------------最左匹配理解为啥会有最左匹配原则:a字段是有序的:1,1,2,3,4b: 1,2,2,5,1会先对a字段排序然后再对b字段排序那么单纯的: b2进行查询是没办法用到索引的。理解最左匹配假如有(a,b) 这么一个联合索引的话查询语句一定要有a字段否则会进行全表扫描 (但是8.0中有索引跳跃扫描走了索引但是如果a字段很多那效率就很低了!!!)。------------------------------------通过递归生成测试数据col1和col2都有则说明用到了索引并且key_len为10只有字段col1也可以走索引 key_len为5只有col2则没有走索引走了全表扫描!!!理解原因也就是先按照col1排序但是col2的话是没有关联的只能全表扫描可以看出col1是等值 col2是范围 那也可以用到索引因为先找到col1的col2的往后找就行。改为 100时没有走!!! 因为绝大多数可能都大于100所以没走所以走索引再回表还是直接全表扫描呢?大一点就走了说明: 大宇1W的可能也就10条优化器认为走索引好。左边是确定的则走了索引。右边是确定的则不走。也就是遵循最左索引的规则上减少索引数量。也就是(col1, col2) (col2) 这样子建2个索引。