Hi , I am using virtuoso 7 open source edition, This query below is fast, it return the result instantly,
select * WHERE { graph <http://localhost:8890/graph> { ?catAtt qq:catId ?catId; qq:caDataType ?caDataType; qq:showInView ?showInview; qq:valFormat ?valFormatKey; qq:multiple ?multiple; qq:position ?position; qq:link ?link; qq:catAttName ?catAttName; qq:setting ?setting; qq:flag ?flag; qq:unit ?caUnit. } } LIMIT 20 This query is so slow, took 10 seconds for the result, the only difference is the ?catId is replaced with literal value 1 . I thought this should be faster because it's more specific. select * WHERE { graph <http://localhost:8890/graph> { ?catAtt qq:catId 1; qq:caDataType ?caDataType; qq:showInView ?showInview; qq:valFormat ?valFormatKey; qq:multiple ?multiple; qq:position ?position; qq:link ?link; qq:catAttName ?catAttName; qq:setting ?setting; qq:flag ?flag; qq:unit ?caUnit. } } LIMIT 20 Why is it so ? I am still new to sparql and triplestore, seems like I have to do some indexing on the object ? I have tried creating the GOPS index with, I don't understand about the Partition part, is using O correct ? What does that partition mean ? Creating this index has improved the execution for the second query to 4 seconds, but still too slow for a DBMS. CREATE COLUMN INDEX RDF_QUAD_GOPS ON RDF_QUAD (G, O, P, S) PARTITION (O VARCHAR (-1, 0hexffff)); Btw, does virtuoso stored triplet in the regular RDBMS table ? in the table DB.DBA.RDF_QUAD ? So virtuoso does not have a native storage of graph ? Or what I don't understand ? Thanks Best regards, William
_______________________________________________ Virtuoso-users mailing list Virtuoso-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/virtuoso-users