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.

Reply via email to