Hi,
I tried to use the below query to get the count of vertices with most edges:
select *, *in()*.size() as size from FamilyMember ORDER_BY size DESC
I have about 33 million vertices and the query seems to be taking ages.
Please suggest how i can improve the query or suggest possible cause for
such a long execution time...
I am using 2.2.0 community edition on a stable dedicated machine with
decent configuration (xeon e5 with 28G RAM)
Ron
On Friday, 26 April 2013 08:47:34 UTC+2, Lvc@ wrote:
>
> Hi,
> Topping says well. However you can do something similar to what you did
> with 1.3.0 by using the new in() function:
>
> select url, *in()*.size() as in_size from Links ORDER_BY in_size DESC
>
> To count only the edges of type "linked" (label = linked) you can do:
>
> select url, *in('linked')*.size() as in_size from Links ORDER_BY in_size
> DESC
>
> or again:
>
> select url, *edges('in', 'linked')*.size() as in_size from Links ORDER_BY
> in_size DESC
>
> Lvc@
>
>
> On 25 April 2013 18:20, Yingshou Guo <[email protected] <javascript:>>
> wrote:
>
>> Hi,
>>
>> Thanks and I'll try it in my usecase.
>>
>> Best,
>>
>> Guo Yingshou
>>
>>
>>
>> On Fri, Apr 26, 2013 at 12:13 AM, Topping Bowers <
>> [email protected] <javascript:>> wrote:
>>
>>> I think this:
>>>
>>> select *, in_linked.size() AS out_size from V ORDER BY out_size DESC
>>>
>>> That's because I have an edge type "linked" - so it's
>>> in_#{edge.className}.size()
>>>
>>>
>>> On Thu, Apr 25, 2013 at 11:54 AM, Yingshou Guo <[email protected]
>>> <javascript:>> wrote:
>>>
>>>> Hi Luca,
>>>>
>>>> The problem with me using count() is that I don't know how to use it
>>>> together with order by clause.
>>>>
>>>> In the following example, Would you please tell me how should I order
>>>> by the number of in_ edge?
>>>>
>>>> orientdb> select in_ from V
>>>>
>>>> ---+---------
>>>> #| RID |
>>>> ---+---------
>>>> 0| #-2:1
>>>> 1| #-2:2
>>>> 2| #-2:3
>>>> 3| #-2:4
>>>> 4| #-2:5
>>>> 5| #-2:6
>>>> 6| #-2:7
>>>> 7| #-2:8
>>>> 8| #-2:9
>>>> 9| #-2:10|#38:0
>>>> 10| #-2:11|[3]
>>>> 11| #-2:12|#38:2
>>>> 12| #-2:13|#38:3
>>>> 13| #-2:14|#38:4
>>>> 14| #-2:15|#38:5
>>>> 15| #-2:16|[2]
>>>> 16| #-2:17|#38:7
>>>> 17| #-2:18|[6]
>>>> 18| #-2:19|#37:0
>>>> 19| #-2:20|#37:1
>>>>
>>>> My Query does not work:
>>>>
>>>> orientdb> select from V order by count(in_) desc
>>>>
>>>> Error:
>>>> com.orientechnologies.orient.core.sql.OCommandSQLParsingException: Error
>>>> on
>>>> parsing command at position #0: Error on parsing command at position #28:
>>>> Ordering mode 'IN_' not supported. Valid is 'ASC', 'DESC' or nothing
>>>> ('ASC'
>>>> by default)
>>>> Command: select from V order by count(in_)
>>>>
>>>>
>>>> On Thu, Apr 25, 2013 at 11:40 PM, Luca Garulli <[email protected]
>>>> <javascript:>> wrote:
>>>>
>>>>> Hi,
>>>>> count() against edges is very cheap operation (OrientDB keeps track of
>>>>> such counter like you would do).
>>>>>
>>>>> Lvc@
>>>>>
>>>>>
>>>>>
>>>>> On 25 April 2013 17:34, Yingshou Guo <[email protected] <javascript:>
>>>>> > wrote:
>>>>>
>>>>>> I'm doing something similar. IMHO the simplest and most scalable
>>>>>> solution is add a count property to the vertex and increment it each
>>>>>> time a
>>>>>> new edge is added.
>>>>>>
>>>>>>
>>>>>> On Thu, Apr 25, 2013 at 9:35 PM, Marko Rodriguez <[email protected]
>>>>>> <javascript:>> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> graph.v("@class" =>
>>>>>>> "User").out_e(:mentioned).in_v.groupCount(:url).sort {|a,b| a[1] <=>
>>>>>>> b[1] }
>>>>>>>
>>>>>>> Forgive the weird syntax... we're using Pacer in Jruby, but i'm more
>>>>>>> interested in the philosophy of tinkerpop/gremlin rather than actual
>>>>>>> syntax.
>>>>>>>
>>>>>>> So to sum it up:
>>>>>>>
>>>>>>> "find the top 10 link vertexes with the highest count of in_edges,
>>>>>>> using Tinkerpop and/or gremlin"
>>>>>>>
>>>>>>>
>>>>>>> g.V('@class','User').transform{[it, it.inE.count()]}.order{it.b[1]
>>>>>>> <=> it.a[1]}.next(10)
>>>>>>>
>>>>>>>
>>>>>>> Here is your answer using the toy TinkerGraph deployed with Gremlin.
>>>>>>> --- note I don't do @class='User' as that doesn't exist in the dataset.
>>>>>>>
>>>>>>> gremlin> g = TinkerGraphFactory.createTinkerGraph()
>>>>>>> ==>tinkergraph[vertices:6 edges:6]
>>>>>>> gremlin> g.V.transform{[it,it.inE.count()]}
>>>>>>> ==>[v[3], 3]
>>>>>>> ==>[v[2], 1]
>>>>>>> ==>[v[1], 0]
>>>>>>> ==>[v[6], 0]
>>>>>>> ==>[v[5], 1]
>>>>>>> ==>[v[4], 1]
>>>>>>> gremlin> g.V.transform{[it,it.inE.count()]}.order{it.b[1] <=>
>>>>>>> it.a[1]}
>>>>>>> ==>[v[3], 3]
>>>>>>> ==>[v[2], 1]
>>>>>>> ==>[v[5], 1]
>>>>>>> ==>[v[4], 1]
>>>>>>> ==>[v[1], 0]
>>>>>>> ==>[v[6], 0]
>>>>>>> gremlin> g.V.transform{[it,it.inE.count()]}.order{it.b[1] <=>
>>>>>>> it.a[1]}.next(3)
>>>>>>> ==>[v[3], 3]
>>>>>>> ==>[v[2], 1]
>>>>>>> ==>[v[5], 1]
>>>>>>>
>>>>>>>
>>>>>>> I believe this is trivial to map over to Pacer syntax.
>>>>>>>
>>>>>>> HTH,
>>>>>>> Marko.
>>>>>>>
>>>>>>> http://markorodriguez.com
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> ---
>>>>>>> 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] <javascript:>.
>>>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> ---
>>>>>> 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] <javascript:>.
>>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> ---
>>>>> 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] <javascript:>.
>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>>
>>>> ---
>>>> You received this message because you are subscribed to a topic in the
>>>> Google Groups "OrientDB" group.
>>>> To unsubscribe from this topic, visit
>>>> https://groups.google.com/d/topic/orient-database/0RgCgSE0yuQ/unsubscribe?hl=en
>>>> .
>>>> To unsubscribe from this group and all its topics, send an email to
>>>> [email protected] <javascript:>.
>>>>
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Topper Bowers
>>>
>>> [email protected] <javascript:>
>>> http://amicushq.com
>>> http://blog.toppingdesign.com
>>>
>>> --
>>>
>>> ---
>>> 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] <javascript:>.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>>
>> --
>>
>> ---
>> 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] <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>
--
---
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.