2012-10-27 39 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?