The best would be using spatial indexes to achieve super performance. This is something we're working for and will be available in a couple of weeks as plugin.
Lvc@ On 4 April 2014 14:24, sANTo L <[email protected]> wrote: > Hi Luca, > > that was fast :-) > > And yes, that seems to do the trick. Thanks! > One additional question though: Isn't this, especially the last query > (with select *), bad for performance ? > > regards, > > Santo > > Op vrijdag 4 april 2014 14:13:53 UTC+2 schreef Lvc@: >> >> Hi Santo, >> try this: >> >> select $distance as distance from cities let $distance = distance(latitude, >> longitude, 51.4503729, 4.4914635) where $distance < 20 >> >> And on Graph API: >> >> OSQLAsynchQuery<Vertex> asyncQuery = new OSQLAsynchQuery<Vertex>("select >> *, $distance as distance from cities let $distance = distance(latitude, >> longitude, 51.4503729, 4.4914635) where $distance < 20"); >> >> Lvc@ >> >> >> On 4 April 2014 14:10, sANTo L <[email protected]> wrote: >> >>> Hi, >>> >>> What is the correct / recommended way to use the result of distance() in >>> a where clause ? >>> >>> I know I can do something like this: >>> select distance(latitude, longitude, 51.4503729, 4.4914635) as distance >>> from cities >>> >>> But I can't do this: >>> select distance(latitude, longitude, 51.4503729, 4.4914635) as distance >>> from cities where distance < 20 >>> >>> Of course I could do this: >>> select distance(latitude, longitude, 51.4503729, 4.4914635) as distance >>> from cities where distance(latitude, longitude, 51.4503729, 4.4914635) < 20 >>> >>> But I can't imagine that would be the most optimal/recommended way, is >>> it ? >>> >>> >>> Also, how can I send this distance value back together with the record >>> itself when using the java OrientGraph API ? >>> >>> Normally I'm doing something like this: >>> >>> OSQLAsynchQuery<Vertex> asyncQuery = new >>> OSQLAsynchQuery<Vertex>("select from cities where distance(latitude, >>> longitude, 51.4503729, 4.4914635) < 20"); >>> OCommandResultListener asyncListener = new >>> OCommandResultListener() { >>> int resultCount = 0; >>> @Override >>> public boolean result(Object iRecord) { >>> resultCount++; >>> Vertex doc = graphDb.getVertex(iRecord); >>> System.out.println("new record received (" + resultCount >>> + ")"); >>> System.out.println(">> zipcode: " + >>> doc.getProperty("zipcode")); >>> return true; >>> } >>> >>> @Override >>> public void end() { >>> System.out.println("All records received: " + >>> resultCount); >>> } >>> }; >>> >>> But how do I add the distance to this ? >>> I could probably use something like this for the query: "select @this, >>> distance(latitude, longitude, 51.4503729, 4.4914635) as distance from >>> cities" >>> >>> But what would be the result type in this case ? >>> >>> Or do I have to perform separate querries for this (which would cause a >>> significant overhead) ? >>> >>> >>> regards, >>> >>> Santo >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "OrientDB" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > > --- > You received this message because you are subscribed to the Google Groups > "OrientDB" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
