慢速数据返回Parse iOS swift 3

时间:2017-07-13 19:59:00

标签: ios swift parse-platform parse-server parse-ios-sdk

我正在使用Parse版本" 1.14.4" iOS 10.3.2和swift 3。 无论本地(返回的对象是固定的)还是远程的,查询都很慢。 感谢

let placeObject = PFObject(className:"PlaceObject")
let point = PFGeoPoint(latitude:self.PointGlobal.latitude, longitude:self.PointGlobal.longitude)
placeObject["location"] = point
let query = PFQuery(className:"CLocationObject")
// Interested in locations near user.
query.whereKey("location", nearGeoPoint:point)
// Limit what could be a lot of points.
query.limit = 200
let localQuery = (query.copy() as! PFQuery).fromLocalDatastore()

localQuery.findObjectsInBackground{
  (objects: [PFObject]?, error: Error?) -> Void in

self.dataReturnedLocally = true

.....

if self.dataReturnedLocally{
print("local query with no error there was data already")
}

  else {
  print("getting data remotely")
  query.findObjectsInBackground{
    (objects: [PFObject]?, error: Error?) -> Void in
    if error == nil {

      if let objects = objects  {

2 个答案:

答案 0 :(得分:1)

不幸的是,

基于地理位置的查询是使用MongoDB的最慢类型的查询。此外,没有基于位置的自动索引,这使得这些速度变慢,特别是对于大型集合。因此,您唯一真正的解决方案是为数据库添加索引以索引位置,并针对您需要进行的位置查询进行优化。尽管如此,请记住,其中有太多会影响写入速度。

根据您的使用情况,最好使用withinMiles代替nearGeoPoint。这将返回更少的结果,但也不会花费很长时间来运行。

答案 1 :(得分:1)

目前LDS中的所有查询都很慢,因为它们没有编入索引。 LDS存储了数据的objectId / JSON表示,所有过滤都在内存中完成。