Hi all, I got a problem with Virtuoso 7.0.0 and I think it's related to the use of indices. My question is: have there been any big changes between the rc2 and the stable version, so that indices are not completely compatible across the two versions?
Here is one of the queries I ran on both versions (just the names have been changed): PREFIX int: <namespace#> CONSTRUCT {?s int:new_prop ?n} WHERE {?s <prop> ?c . ?c rdfs:label ?n} and below you can find the result of EXPLAINing the query on the rc2 version first and then on 7.0.0. The query is reasonably fast on rc2 (41659 msec with ResultSetMaxRows = 10000), while it takes an awfully long time (1011741 msec, same ResultSetMaxRows) on 7.0.0. Other queries have a similar problem. Any ideas? Thank you, Nicola ------------------------ Virtuoso rc2 { Precode: 0: { s# 63 cluster outer seq start, set no <V $44 set_ctr in> save ctx:() Precode: 0: <V $27 vector x> := Call vector ( 1 , 0 , 3 , #new_prop , 1 , 1 ) 5: <V $29 vector x> := Call vector (<V $27 vector x>) 10: <V $31 vector x> := Call vector () 15: BReturn 0 s# 89 Fork 46 { s# 70 from DB.DBA.RDF_QUAD by RDF_QUAD 2.5e+05 rows Key RDF_QUAD ASC (<V $35 s_1_7_t1.O an>, <V $34 s_1_7_t1.S rn>) inlined P = #prop row specs: O LIKE <c T�> s# 77 from DB.DBA.RDF_QUAD by RDF_QUAD 1 rows Key RDF_QUAD ASC (<V $38 s_1_7_t2.O an>) inlined P = #label , S = <v $81 k_s_1_7_t1.O S83 rn> vector param casts: <V $35 s_1_7_t1.O an>-> <v $81 k_s_1_7_t1.O S83 rn> After code: 0: <V $40 __ro2lo x> := Call __ro2lo (<V $38 s_1_7_t2.O an>) 5: <V $42 vector x> := Call vector (<r $34 s_1_7_t1.S via S77 S83>, <V $40 __ro2lo x>) 10: if ($47 "user_aggr_notfirst" = 1 ) then 25 else 14 unkn 14 14: $47 "user_aggr_notfirst" := := artm 1 18: <V $49 user_aggr_ret x> := Call DB.DBA.SPARQL_CONSTRUCT_INIT ($48 "user_aggr_env") 25: <V $49 user_aggr_ret x> := Call DB.DBA.SPARQL_CONSTRUCT_ACC ($48 "user_aggr_env", <r $29 vector via S77 S83 S70>, <V $42 vector x>, <r $31 vector via S77 S83 S70>, 1 ) 32: BReturn 0 } s# 92 skip node 1 <none> <V $44 set_ctr in> After code: 0: <V $50 callret-0 x> := Call DB.DBA.SPARQL_CONSTRUCT_FIN ($48 "user_aggr_env") 7: BReturn 0 s# 96 Subquery Select(<V $50 callret-0 x>) set no: <r $44 set_ctr via S92> } 8: <none> := Call DB.DBA.RDF_DICT_OF_TRIPLES_TO_THREE_COLS ($100 "scalar") 15: BReturn 0 END Node } ------------------------ Virtuoso 7.0.0 { Precode: 0: { Precode: 0: vector := Call vector ( 1 , 0 , 3 , #new_prop , 1 , 1 ) 5: vector := Call vector (vector) 10: vector := Call vector () 15: BReturn 0 { fork RDF_QUAD 4.2e+08 rows(s_1_7_t2.S, s_1_7_t2.O) inlined P = #label Precode: 0: __ro2lo := Call __ro2lo (s_1_7_t2.O) 5: BReturn 0 RDF_QUAD_POGS 33 rows(s_1_7_t1.S) P = #prop , O = cast After code: 0: vector := Call vector (s_1_7_t1.S, __ro2lo) 5: if ($47 "user_aggr_notfirst" = 1 ) then 20 else 9 unkn 9 9: $47 "user_aggr_notfirst" := := artm 1 13: user_aggr_ret := Call DB.DBA.SPARQL_CONSTRUCT_INIT ($48 "user_aggr_env") 20: user_aggr_ret := Call DB.DBA.SPARQL_CONSTRUCT_ACC ($48 "user_aggr_env", vector, vector, vector, 1 ) 27: BReturn 0 } skip node 1 <none> set_ctr After code: 0: callret-0 := Call DB.DBA.SPARQL_CONSTRUCT_FIN ($48 "user_aggr_env") 7: BReturn 0 Subquery Select(callret-0) } 8: <none> := Call DB.DBA.RDF_DICT_OF_TRIPLES_TO_THREE_COLS ($100 "scalar") 15: BReturn 0 END Node } ------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk _______________________________________________ Virtuoso-users mailing list Virtuoso-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/virtuoso-users