Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 循环遍历大型数据集的另一种方法_Php_Xml - Fatal编程技术网

Php 循环遍历大型数据集的另一种方法

Php 循环遍历大型数据集的另一种方法,php,xml,Php,Xml,我有一个包含用户id和项目字段的表。user_id只是一个带有用户id的int,而项是“text”字段中的一个xml结构化对象。我希望能够看到有关球员项目的统计数据。i、 e.谁拥有某项物品最多,每个人的平均财富,等等 目前,我必须循环遍历每一行,然后再次创建一个SimpleXMLElement并循环遍历该行,并在给定特定条件的情况下进行筛选 结构如下: 库存 例如,如果我想做一个查询来计算所有项目id为332的项目,这个查询需要3-4秒。我们预计将有超过50k行(目前为28k行),因此如果有

我有一个包含用户id和项目字段的表。user_id只是一个带有用户id的int,而项是“text”字段中的一个xml结构化对象。我希望能够看到有关球员项目的统计数据。i、 e.谁拥有某项物品最多,每个人的平均财富,等等

目前,我必须循环遍历每一行,然后再次创建一个SimpleXMLElement并循环遍历该行,并在给定特定条件的情况下进行筛选

结构如下: 库存


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

像mysql一样使用怎么样

比如说

SELECT * FROM table WHERE inventory like '%<itemid>332</itemid>%';
从表中选择*,其中的库存为“%332%”;

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


这里可以看到一个例子,在。

中,您需要每个字段吗?你考虑过ReGEX吗?请提一下你的数据库,因为它在这里有意义(你可以在数据库中做这一切)。这实际上是我的解决方案。回头看看有人这么说真是太奇怪了。它将速度提高了400%,因此这是一个可接受的解决方案。