【问题标题】:Slow data return Parse iOS swift 3数据返回慢 Parse iOS swift 3
【发布时间】:2017-07-13 19:58:59
【问题描述】:

我正在使用 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  {

【问题讨论】:

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


    【解决方案1】:

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

    根据您的用例,使用withinMiles 代替nearGeoPoint 可能会更好。这将返回更少的结果,但运行时间也不会太长。

    【讨论】:

    • 感谢 Jake,但本地查询也很慢。在这种情况下,这应该与 MongoDB 无关。
    • 基于地理的查询将成为本地最慢的查询类型,不幸的是,我认为您无法深入了解本地数据存储的细节。我不知道你可以用它做任何索引。因此,您最好的选择是再次将其更改为 withinMiles 而不是 whereNear。没什么可做的。
    • 谢谢杰克,但在我的情况下,它不会有什么不同,因为它会返回相同数量的数据点。您知道我们可以在 Parse 中查询以前未返回的数据的技术吗?
    【解决方案2】:

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

    【讨论】:

    • 当你说所有的时候,你的意思是所有 Parse LDS?
    • 我的意思是每次你对LDS进行查询时,查询过滤都是在内存中完成的
    • 好的。所以总的来说,无论是使用 LDS 还是远程,查询都很慢?您会推荐连续的较小查询吗?如果是这样,您将如何实现这样的事情:查询 1 那么查询 2 将是不在查询 1 中的结果?谢谢
    • 如果您的查询在远程很慢,您可能应该查看您的索引,mongodb 日志将打印任何超过某个阈值的慢查询docs.mongodb.com/manual/tutorial/manage-the-database-profiler 对于 LDS,我建议您使用不同的引脚,所以某个查询的本地数据是孤立的,直到我们找到一个好的解决方案:)
    • 谢谢,会在数据库方面做。在 LDS 方面,您所说的不同引脚是什么意思?
    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多