C# OrientDB重试模式异常

C# OrientDB重试模式异常,c#,.net,performance,orientdb,orientdb2.2,C#,.net,Performance,Orientdb,Orientdb2.2,我有一个OrientDB数据库,有大约3亿条A级和V级记录。 每个记录都有一个属性'x'LONG,我为它建立了一个索引NOTUNIQUE 我现在正试图从我的C代码中访问“x>0”的记录: SELECT * FROM A WHERE x > 0 由于.NET二进制连接器的硬编码套接字超时超过30秒,因此我尝试使用分页来限制结果集和查询时间: SELECT * FROM A WHERE @rid > <skip> AND x > 0 LIMIT 10000 我想不出

我有一个OrientDB数据库,有大约3亿条A级和V级记录。 每个记录都有一个属性'x'LONG,我为它建立了一个索引NOTUNIQUE

我现在正试图从我的C代码中访问“x>0”的记录:

SELECT * FROM A WHERE x > 0
由于.NET二进制连接器的硬编码套接字超时超过30秒,因此我尝试使用分页来限制结果集和查询时间:

SELECT * FROM A WHERE @rid > <skip> AND x > 0 LIMIT 10000
我想不出一个合适的方法来接收下一次迭代的结果,我需要@rid删除搜索的最后一条记录,只获取匹配的@rid,再次遇到超时错误。第一次查询耗时约4秒,第二次耗时5秒,第三次耗时6秒,很快增加到30秒以上,导致超时。这可能是因为我的代码被意外设计为扫描第一个连续的非命中,然后无法增加跳过:

using (var db = new ODatabase("localhost", 2424, "testgraph", ODatabaseType.Graph, "root", "<some password>"))
{
    var skip = new ORID();
    var limit = 20000;
    var records = db.Command($"SELECT * FROM A WHERE @rid > {skip} AND x > 0 LIMIT {limit}").ToList();
    while (records.Count > 0)
    {
        // problem is here
        skip = new ORID(records.Last().ORID);
        foreach (var record in records)
        {
            // do awesome stuff
        }
        records = db.Command($"SELECT * FROM A WHERE @rid > {skip} AND x > 0 LIMIT {limit}").ToList();
    }
}
是否有任何方法可以检索x>0的记录,以避免超时问题,而不是使用更多的CPU电源和更快的存储


提前谢谢

你也能展示你的部分源代码吗?@dgiannotti在你的评论之后,我重新考虑了我的代码,并重新表述了我的问题。我不知道我在这个方法中的错误