我有一个包含user_id和items字段的表。 user_id只是一个带有用户id的int,而items是'text'字段中的xml结构化对象。我希望能够看到有关玩家物品的统计数据。即谁拥有大部分物品,每个人的平均财富等等。
我目前必须循环遍历每一行,然后再创建一个SimpleXMLElement并循环并根据特定条件进行过滤。
结构如下: 库存
如果我想进行查询以计算项目ID为332的所有项目,则此查询需要3-4秒。我们期望有50k +行(目前是28k),所以如果有任何其他方式我可以加快这个过程,那就太棒了。
答案 0 :(得分:1)
如何使用mysql?
例如
SELECT * FROM table WHERE inventory like '%<itemid>332</itemid>%';
答案 1 :(得分:1)
根据查询此数据所需的数量,将其存储为XML可能不是最佳方法;假设您已经确定它是,许多数据库支持某种形式的XPath查询,可用于从XML字段中提取数据。 MySQL provides some support以ExtractValue函数的形式,可以用于以比单纯使用LIKE更可靠的方式提取您需要的条件(例如,在判断性的答案中;如果有多个,则该怎么办? XML中的itemid?)。
可以在How to use XPATH in MySQL select?上的SO上看到一个例子。