2011-01-21 183 views
0

我想從dbpedia RDF三元組創建數據庫。我有一張表Categories其中包含維基百科中的所有類別。要存儲分類,我已創建了一個表,其中childparent字段,外鍵爲Categories表。要加載從NTriples類別IAM使用下面的SQL查詢Wikipedia Graph數據庫插入

INSERT INTO CatToCat (`child`, `parent`) 
values((SELECT id FROM Categories WHERE BINARY identifier='Bar'), 
     (SELECT id FROM Categories WHERE BINARY identifier='Bar')); 

但插入是很慢..將250萬間的關係將需要很長的時間..有更好的方法來優化查詢,模式?

+0

你的問題對我來說並不合適。你說你正在使用SQL來查詢NTriples,這沒有多大意義。我假設你已經有了在SQL數據庫中導入的數據。部分原因是爲什麼?將表放入RDF /三重存儲並使用推理來推斷關係可能會更好。 – RobV 2011-01-21 13:54:55

回答

1

我解決了這個問題。是一些索引問題。在類別中製作標識符唯一和二進制。我想這加快了兩個選擇。

1
  1. 考慮加載SELECT id, indentifier from Categories到在客戶端上的散列表(或線索),並使用該填補CatToCat。在一個維基百科大小的數據庫上,我期望看到恆定時間哈希查找和查找樹(在不同數據項的數量上是不變的)之間的巨大性能差異,以及B樹搜索。 (當然,你需要有可用的內存。)

  2. 考慮使用一個帶有參數綁定的PreparedStatement,以便MySQL不必重新解析並重新優化每個插入的查詢。

你必須對這些進行基準測試,找出它們實際上有多大的改進。