使用node.js中的javascript sdk分析地质点查询速度慢且超时

使用node.js中的javascript sdk分析地质点查询速度慢且超时,node.js,parse-platform,Node.js,Parse Platform,我有下面的解析查询,当记录数很大时会超时 var query = new Parse.Query("UserLocation"); query.withinMiles("geo", geo, MAX_LOCATION_RADIUS); query.ascending("createdAt"); if (createdAt !== undefined) { query.greaterThan("createdAt", createdAt); } query.limit(1000); 如

我有下面的解析查询,当记录数很大时会超时

var query = new Parse.Query("UserLocation");
query.withinMiles("geo", geo, MAX_LOCATION_RADIUS);
query.ascending("createdAt");

if (createdAt !== undefined) {
    query.greaterThan("createdAt", createdAt);
}
query.limit(1000);
如果UserLocation表很小,它运行正常。但是,当表有~100k条记录时,查询会不时超时:

[2015-07-15 21:03:30.879] [ERROR] [default] - Error while querying for locations: [latitude=39.959064, longitude=-75.15846]: {"code":124,"message":"operation was slow and timed out"}
UserLocation表有一个纬度、经度对和一个半径。给定一个地理点(纬度、经度),我试图找到其圆(纬度、经度)+半径覆盖给定地理点的用户位置列表。我似乎无法使用表中另一列的值进行距离查询(类似于
查询。withinMiles(“geo”,inputGeo,“radius”)
,其中“geo”和“radius”是GeoPoint和radius的列名)。它还有一个限制,即查询“limit”和“skip”组合最多只能返回10000条记录(一次1000条记录,跳过10次)。因此,我必须使用“createdAt”作为筛选条件进行几乎全表扫描,并继续查询,直到查询不再返回结果为止

无论如何,我可以改进算法,使其在大数据集上不会超时