0

我有一个包含 user_id 和 items 字段的表。user_id 只是带有用户 id 的 int,而 items 是“文本”字段中的 xml 结构化对象。我希望能够查看有关播放器项目的统计信息。即谁拥有最多的某些物品,每个人的平均财富等。

我目前必须遍历每一行,然后再次创建一个 SimpleXMLElement 并循环遍历它并根据特定条件进行过滤。

结构是这样的:库存

例如,如果我想做一个查询来计算所有项目 id 为 332 的项目,这个查询大约需要 3-4 秒。我们预计会有 50k+ 行(目前是 28k),所以如果有任何其他方法可以加快这个过程,那就太好了。

4

2 回答 2

1

使用 mysql 怎么样?

例如

SELECT * FROM table WHERE inventory like '%<itemid>332</itemid>%';
于 2012-10-27T03:24:01.167 回答
1

根据您需要多少查询这些数据,将其存储为 XML 可能不是最好的方法;假设您已经决定这样做,许多数据库都支持某种形式的 XPath 查询,可用于从 XML 字段中提取数据。 MySQL以 ExtractValue 函数的形式提供了一些支持,它可用于以比简单地使用 LIKE 更可靠的方式提取您需要的条件(例如在 deefactorial 的答案中;如果您的 XML 中有多个 itemid 怎么办? )。

可以在 SO 上看到一个示例,在How to use XPATH in MySQL select? .

于 2012-10-27T03:34:15.720 回答