2012-10-27 46 views
0

我有一個包含user_id和項目字段的表。 user_id只是用戶ID的int,而這些項目是'text'字段中的xml結構化對象。我希望能夠看到有關玩家項目的統計數據。即誰擁有最多的項目,每個人的平均財富等。循環訪問大型數據集的另一種方法

我目前必須循環遍歷每一行,然後再次創建一個SimpleXMLElement,並通過給定一個特定的條件來過濾和過濾。

的結構是這樣的: 庫存

如果我想要做一個查詢來計算所有項目ID的項目332爲例,這個查詢需要像3-4秒。我們預計會有50k +行(目前爲28k),所以如果有任何其他方式可以加快這個過程,那就太好了。

+0

你是否需要每一個領域?你有沒有考慮過正則表達式? – xfx

+0

請提及您的數據庫,因爲它在這裏有影響(您可以在數據庫中完成所有工作)。 –

回答

1

怎麼樣使用mysql?

例如

SELECT * FROM table WHERE inventory like '%<itemid>332</itemid>%'; 
+0

這實際上是我的解決方案。很奇怪,請回頭看看有人提出這個建議。它將速度提高了400%,所以這是一個可以接受的解決方案。 – Steve

1

取決於你需要多少來查詢數據,把它作爲XML可能不是最好的方法;假設您已經確定它是這樣的,許多數據庫都支持某種形式的XPath查詢,這些查詢可用於從XML字段中提取數據。 MySQL provides some support以ExtractValue函數的形式提供,它可用於以比使用LIKE更可靠的方式提取所需的條件(例如,在deefactorial的答案中;如果XML中有多個itemid?)。

一個例子可以在SO上看到,在How to use XPATH in MySQL select?