Indexing 在couchbase中高效地创建索引

Indexing 在couchbase中高效地创建索引,indexing,couchbase,Indexing,Couchbase,我有一个巨大的数据库,用户可以使用多个过滤器进行查询。我有大约10个过滤器,用户可以使用和多个过滤器可以应用。基于此过滤器创建索引的有效方法是什么?我是否要为所有可能的组合创建索引?如果我沿着这条路走下去,创建太多索引可能会产生什么后果?这是一个在不了解系统的情况下很难回答的问题。以下是我的建议: 1)Couchbase 6.5有一个索引推荐程序,安装在您的机器上,并在那里运行最常见的查询。它将为每一项提供适当的索引 2)一旦你有了所有的索引建议,试着将它们与相同的文档类型结合起来 3)每个文档

我有一个巨大的数据库,用户可以使用多个过滤器进行查询。我有大约10个过滤器,用户可以使用和多个过滤器可以应用。基于此过滤器创建索引的有效方法是什么?我是否要为所有可能的组合创建索引?如果我沿着这条路走下去,创建太多索引可能会产生什么后果?

这是一个在不了解系统的情况下很难回答的问题。以下是我的建议:

1)Couchbase 6.5有一个索引推荐程序,安装在您的机器上,并在那里运行最常见的查询。它将为每一项提供适当的索引

2)一旦你有了所有的索引建议,试着将它们与相同的文档类型结合起来

3)每个文档类型至少应有一个索引

4)从生产环境中删除主索引(一旦每个文档类型至少有一个索引)

< > >强>排序是一个昂贵的操作,考虑将数据存储在已经排序的索引中:

CREATE INDEX `us_users_sorted` ON
`user_profile`(
`countryCode`,
`firstName` DESC,
`lastName` DESC)
WHERE (((`type` = "user")
and (`enabled` = true))
and (`countryCode` = "US"))
6)尽可能避免选择*,并使用部分索引和覆盖索引

<强> 7)如果有太多字段要索引的文档,请考虑使用自适应索引

创建太多索引的副作用自然会增加磁盘、cpu和内存的占用空间。但是,这取决于数据和集群的大小


如果你有一个具有5个节点的集群,你也可以考虑从数据节点中分离索引和查询。

< P>这是一个很难回答的问题而不需要知道你的系统。以下是我的建议:

1)Couchbase 6.5有一个索引推荐程序,安装在您的机器上,并在那里运行最常见的查询。它将为每一项提供适当的索引

2)一旦你有了所有的索引建议,试着将它们与相同的文档类型结合起来

3)每个文档类型至少应有一个索引

4)从生产环境中删除主索引(一旦每个文档类型至少有一个索引)

< > >强>排序是一个昂贵的操作,考虑将数据存储在已经排序的索引中:

CREATE INDEX `us_users_sorted` ON
`user_profile`(
`countryCode`,
`firstName` DESC,
`lastName` DESC)
WHERE (((`type` = "user")
and (`enabled` = true))
and (`countryCode` = "US"))
6)尽可能避免选择*,并使用部分索引和覆盖索引

<强> 7)如果有太多字段要索引的文档,请考虑使用自适应索引

创建太多索引的副作用自然会增加磁盘、cpu和内存的占用空间。但是,这取决于数据和集群的大小


如果你有一个具有5个节点的群集,你也可以考虑从数据节点中分离索引和查询。

这可能有助于索引推荐的帮助。谢谢(:索引推荐帮助。谢谢(: