问题是,对于完全相同的数据库和不同的iOS设备(4和5),执行相同查询的时间是运行iOS 5时的5倍.
有人知道为什么吗?
这是距离的代码:
static voID distanceFunc(@R_301_4777@_context *context,int argc,@R_301_4777@_value **argv){// check that we have four arguments (lat1,lon1,lat2,lon2)assert(argc == 4);// check that all four arguments are non-nullif (@R_301_4777@_value_type(argv[0]) == sqlITE_NulL || @R_301_4777@_value_type(argv[1]) == sqlITE_NulL || @R_301_4777@_value_type(argv[2]) == sqlITE_NulL || @R_301_4777@_value_type(argv[3]) == sqlITE_NulL) { @R_301_4777@_result_null(context); return;}// get the four argument valuesdouble lat1 = @R_301_4777@_value_double(argv[0]);double lon1 = @R_301_4777@_value_double(argv[1]);double lat2 = @R_301_4777@_value_double(argv[2]);double lon2 = @R_301_4777@_value_double(argv[3]);// convert lat1 and lat2 into radians Now,to avoID doing it twice belowdouble lat1rad = DEG2RAD(lat1);double lat2rad = DEG2RAD(lat2);// apply the spherical law of cosines to our latitudes and longitudes,and set the result appropriately// 6378.1 is the approximate radius of the earth in kilometres@R_301_4777@_result_double(context,(acos(sin(lat1rad) * sin(lat2rad) + cos(lat1rad) * cos(lat2rad) * cos(DEG2RAD(lon2) - DEG2RAD(lon1))) * 6378.1) * 1000); }
这是一个关于我如何使用它的例子:
Select distance(Latitude,Longitude,-22.89095,-47.05134) from table
请,任何帮助将非常感谢
谢谢
解决方法 好.我已经发现它是iOS 5.0上的一个问题
即使在最终版本中,仍然会发生缓慢的查询.
我不得不删除“按距离排序(纬度,经度,-47.05134)”,查询再次变快.
然后我使用代码进行排序……不是最好的方式.但…
总结以上是内存溢出为你收集整理的iOS 5中SQLite的距离函数非常慢全部内容,希望文章能够帮你解决iOS 5中SQLite的距离函数非常慢所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)