删除未使用的索引
在这一步骤中,你将学习如何识别并删除 MongoDB 中未使用的索引,以优化数据库性能和存储。
首先,查看集合中所有现有的索引:
use indexlab
db.users.getIndexes()
示例输出:
[
{ v: 2, key: { _id: 1 }, name: '_id_' },
{ v: 2, key: { age: 1 }, name: 'age_1' },
{ v: 2, key: { city: 1, age: -1 }, name: 'city_1_age_-1' },
{ v: 2, key: { name: 1, city: 1, age: 1 }, name: 'name_1_city_1_age_1' },
{ v: 2, key: { email: 1 }, name: 'email_1' }
]
要检查索引使用情况,我们可以使用 $indexStats
聚合操作:
db.users.aggregate([{ $indexStats: {} }]);
示例输出:
[
{
name: 'age_1',
key: { age: 1 },
host: '...',
accesses: {
ops: 0,
since: ISODate("...")
}
},
// ... 其他索引统计信息
]
让我们删除一个未使用的索引。我们将删除 city_1_age_-1
索引:
db.users.dropIndex("city_1_age_-1");
验证索引是否已被删除:
db.users.getIndexes();
索引管理的最佳实践:
- 定期检查索引使用情况
- 删除不常使用的索引
- 在查询性能和存储开销之间找到平衡