如何通过增加单个集合中的文档数来提高ArangoDB 2.7中的检索查询性能

Mrityunjay Singh

我已将数据以以下格式存储在arangoDB 2.7中:

    {"content": "Book.xml", "type": "string", "name": "name", "key": 102}
    {"content": "D:/XMLexample/Book.xml", "type": "string", "name": "location", "key": 102}
    {"content": "xml", "type": "string", "name": "mime-type", "key": 102}
    {"content": 4130, "type": "string", "name": "size", "key": 102}
    {"content": "Sun Aug 25 07:53:32 2013", "type": "string", "name": "created_date", "key": 102}
    {"content": "Wed Jan 23 09:14:07 2013", "type": "string", "name": "modified_date", "key": 102}
    {"content": "catalog", "type": "tag", "name": "root", "key": 102}
    {"content": "book", "type": "string", "name": "tag", "key": 103} 
    {"content": "bk101", "type": {"py/type": "__builtin__.str"}, "name": "id", "key": 103}
    {"content": "Gambardella, Matthew", "type": {"py/type": "__builtin__.str"}, "name": "author", "key": 1031} 
  {"content": "XML Developer's Guide", "type": {"py/type": "__builtin__.str"}, "name": "title", "key": 1031}
    {"content": "Computer", "type": {"py/type": "__builtin__.str"}, "name": "genre", "key": 1031}
    {"content": "44.95", "type": {"py/type": "__builtin__.str"}, "name": "price", "key": 1031}
    {"content": "2000-10-01", "type": {"py/type": "__builtin__.str"}, "name": "publish_date", "key": 1031}
    {"content": "An in-depth look at creating applications with XML.", "type": {"py/type": "__builtin__.str"}, "name": "description", "key": 1031}

随着文档数量的增加,如1000、10000、100000、1000000、10000000等。平均查询响应时间随着文档数量的增加而增加,从0.2秒到3.0秒不等。我已经在该集合上创建了哈希索引。我的问题是,是否可以通过不增加文档数来减少这种情况。

另一方面,我还在内容组件上创建了全文本索引,在全文本搜索中也会发生同样的事情,响应时间从0.05秒到0.3秒不等。

所以告诉我有什么办法可以进一步减少这个时间。

请告诉我我们可以进一步减少响应时间吗?

哥德巴特

不能在嵌套FOR语句的第一级中使用索引但是,从ArangoDB 2.8开始,您可以利用数组索引

您查询的值是data.pname[*].namedata.pname[*].type因此让我们为它们创建索引:

db.DSP.ensureIndex({type:"hash", fields: ['data[*].type']});
db.DSP.ensureIndex({type:"hash", fields: ['data[*].name']});

现在让我们重新构造查询,以便可以利用该索引。我们从一个简单的版本开始进行实验,并使用explain重新验证它实际上是否使用了索引:

db._explain('FOR k IN DSP FILTER "modified_date" IN k.data[*].name RETURN k')
Query string:
 FOR k IN DSP FILTER "modified_date" IN k.data[*].name RETURN k

Execution plan:
 Id   NodeType        Est.   Comment
  1   SingletonNode      1   * ROOT
  6   IndexNode          1     - FOR k IN DSP   /* hash index scan */
  5   ReturnNode         1       - RETURN k

Indexes used:
 By   Type   Collection   Unique   Sparse   Selectivity   Fields               Ranges
  6   hash   DSP          false    false       100.00 %   [ `data[*].name` ] 
                                              ("modified_date" in k.`data`[*].`name`)

因此,我们看到我们可以对数组条件进行过滤,因此您只需将要检查的文档放入内部循环即可:

FOR k IN DSP FILTER "modified_date" IN k.data[*].name || "string" IN k.data[*].type
  FOR p IN k.data FILTER p.name == "modified_date" || p.type == "string" RETURN p

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在单个查询中合并 2 个更新查询 - 性能

来自分类Dev

Doctrine 2嵌套集-在单个查询中检索完整树

来自分类Dev

SQL在单个查询中从2个不同的ID检索信息

来自分类Dev

Doctrine 2嵌套集-在单个查询中检索完整树

来自分类Dev

如何在一个查询中通过LINQ Include检索子数据以提高性能?

来自分类Dev

如何在一个查询中通过LINQ Include检索子数据以提高性能?

来自分类Dev

SQL查询语法可从2个表中检索数据

来自分类Dev

在Arangodb中的数组中时,如何过滤集合中的文档?

来自分类Dev

提高MySQL中的查询性能

来自分类Dev

如何提高BigQuery中的GeoIP查询性能?

来自分类Dev

如何提高BigQuery中的GeoIP查询性能?

来自分类Dev

如何删除ArangoDb中的所有集合和文档

来自分类Dev

查询中的性能函数

来自分类Dev

Elasticsearch中的性能查询

来自分类Dev

MySQL中2个类似的查询,2个性能非常不同,为什么?

来自分类Dev

Meteor JS-通过ID调用集合中的单个文档

来自分类Dev

通过 db2 中的递归查询检索字段偏移量

来自分类Dev

如何从AnimalDB查询中检索文档ID

来自分类Dev

提高 PHP 文件中的 SQL 查询性能

来自分类Dev

通过对MongoDB中嵌套的json数组文档的集合进行计数来分组

来自分类Dev

通过 doc 中的 2 个参数查询集合

来自分类Dev

如何强制联接顺序以提高MYSQL中的查询性能?

来自分类Dev

如何列出集合中的所有文档但显示单个属性?

来自分类Dev

mysqli查询2个表,但仅检索结果而不在另一个表中

来自分类Dev

CakePHP 2.x使用HABTM连接表中的数据进行检索/查询

来自分类Dev

MS Access查询中的性能

来自分类Dev

查询中的MySQL性能问题

来自分类Dev

MS Access查询中的性能

来自分类Dev

简单查询中的性能问题

Related 相关文章

  1. 1

    在单个查询中合并 2 个更新查询 - 性能

  2. 2

    Doctrine 2嵌套集-在单个查询中检索完整树

  3. 3

    SQL在单个查询中从2个不同的ID检索信息

  4. 4

    Doctrine 2嵌套集-在单个查询中检索完整树

  5. 5

    如何在一个查询中通过LINQ Include检索子数据以提高性能?

  6. 6

    如何在一个查询中通过LINQ Include检索子数据以提高性能?

  7. 7

    SQL查询语法可从2个表中检索数据

  8. 8

    在Arangodb中的数组中时,如何过滤集合中的文档?

  9. 9

    提高MySQL中的查询性能

  10. 10

    如何提高BigQuery中的GeoIP查询性能?

  11. 11

    如何提高BigQuery中的GeoIP查询性能?

  12. 12

    如何删除ArangoDb中的所有集合和文档

  13. 13

    查询中的性能函数

  14. 14

    Elasticsearch中的性能查询

  15. 15

    MySQL中2个类似的查询,2个性能非常不同,为什么?

  16. 16

    Meteor JS-通过ID调用集合中的单个文档

  17. 17

    通过 db2 中的递归查询检索字段偏移量

  18. 18

    如何从AnimalDB查询中检索文档ID

  19. 19

    提高 PHP 文件中的 SQL 查询性能

  20. 20

    通过对MongoDB中嵌套的json数组文档的集合进行计数来分组

  21. 21

    通过 doc 中的 2 个参数查询集合

  22. 22

    如何强制联接顺序以提高MYSQL中的查询性能?

  23. 23

    如何列出集合中的所有文档但显示单个属性?

  24. 24

    mysqli查询2个表,但仅检索结果而不在另一个表中

  25. 25

    CakePHP 2.x使用HABTM连接表中的数据进行检索/查询

  26. 26

    MS Access查询中的性能

  27. 27

    查询中的MySQL性能问题

  28. 28

    MS Access查询中的性能

  29. 29

    简单查询中的性能问题

热门标签

归档