当查询要搜索特定表和特定列中的特定数据时,关系数据库(如MySql)的性能优于Neo4j等图形数据库.
例如,如果查询是:“搜索发生在巴黎的所有事件”.
让我们假设为了简单起见,MySql将在“City”上有一个带有索引的Event表来优化这种查询.
Neo4j怎么样?
有人可能会认为图形数据库必须遍历所有图形以检索相关事件……
但是,可以使用Neo4j创建一些索引作为其文档准备.
为什么RDMBS会比这种分析/统计请求更快?
解决方法:
正如您已经提到的:您将为此目的创建索引. Neo4j中的默认索引提供程序是lucene,它非常快并且允许细粒度索引和查询可能性.
指数可用于节点或关系,并且(通常)跟踪在节点或关系上的某些属性上设置的值.
您通常必须在应用程序代码中进行索引,除非您使用neo4j的auto indexing feature自动索引所有节点和/或给定属性的关系.
所以像“搜索在巴黎发生的所有事件”这样的查询绝对没有问题,并且在使用索引时非常高效.