面试题答案
一键面试- 选择原则:
- 频繁查询字段:选择在查询条件中经常出现的字段作为索引字段。例如,如果应用经常根据用户的“username”来查询用户文档,那么“username”字段就适合作为索引字段。
- 复合查询字段:对于涉及多个条件的复合查询,将这些条件对应的字段组合成复合索引。比如经常要根据“category”和“date”来查询文章,那么可以将这两个字段组成复合索引。
- 示例: 假设我们有一个CouchDB数据库,存储博客文章,每个文档结构如下:
{
"_id": "article_1",
"title": "First Article",
"author": "John Doe",
"category": "Technology",
"date": "2023 - 01 - 01",
"content": "This is the content of the first article..."
}
如果我们经常根据“category”和“date”来查询文章,在设计文档的视图时,可以这样定义map函数:
function (doc) {
if (doc.category && doc.date) {
emit([doc.category, doc.date], doc);
}
}
这里将“category”和“date”作为复合索引字段,在查询时使用这个视图就能大大提高查询性能。例如,查询“Technology”类别在“2023 - 01 - 01”之后发布的文章,CouchDB可以快速利用这个索引找到相关文档。