3

我的 orientdb 数据库有大约 230 万条记录。我正在尝试使用 statement- 查询所有重复记录(其中大约有 750,000 条) SELECT FROM (select PROP1, PROP2, count(*) as c from vin_data group by PROP1 ) where c > 1。当我将限制设置为 200 左右时,查询大约需要 180 秒(我认为这很慢)。但是当我将限制设置为 750000 时,它给了我内存不足的错误。我的内存是 4GB,我设置了 Xms64m 和 Xmx3600m。我在 PROP1 和 PROP1+PROP2(复合)上设置了索引。我的问题是——4GB 内存足以容纳 230 万条记录数据库吗?

4

1 回答 1

2

对于上面的查询,两个索引都是毫无价值的,因为它们没有在GROUP BY. 在没有任何“where”条件的情况下,将扫描整个类。PARALLEL您可以尝试通过在语句末尾添加关键字来优化它。如果你有多个核心,它应该会快得多。

无论如何,随着即将发布的 v3.0(仍处于 pre-alpha 版本)中,新的 SQL 引擎已经投入了大量精力,并且像您这样的查询应该会更快。

于 2016-11-07T07:53:35.820 回答