面试题答案
一键面试- 扫描行数:
- 影响:扫描行数越少,索引成本越低。若通过某索引能大幅减少需要扫描的文档数量,就更可能被选择。因为较少的扫描行数意味着数据库处理的数据量小,能更快获取所需数据,提升查询效率。
- 数据返回量:
- 影响:返回的数据量越小成本越低。若索引能直接覆盖查询所需数据,无需再回表获取额外数据,可降低I/O开销,索引被选择的可能性增大。
- 索引选择性:
- 影响:索引选择性高,即索引键值的唯一性强,能更精准定位数据,成本低。高选择性索引可快速过滤大量不相关数据,使查询更高效,在索引选择时更具优势。
- 磁盘I/O开销:
- 影响:磁盘I/O操作代价高,若索引能减少磁盘I/O次数,成本降低。例如覆盖索引可减少回表带来的I/O,从而增加被选择的机会。
- 内存使用:
- 影响:占用内存少的索引成本低。MongoDB在内存中缓存数据和索引,若索引占用内存过多,会影响其他操作性能,所以内存友好的索引更易被选用。