【发布时间】:2015-04-09 12:37:15
【问题描述】:
我目前正在研究从 excel 中导入价格的功能,并正在寻找有关在 PHP 和 SQL 之间处理大型数据集的最佳方法的建议。
基本上,用户可以导入单个文件来更新他们的所有价目表(最多 15 个)。所以一行示例数据可能看起来像
会员代码|价格表1 价格|价格表2 价格|价格表3 价格|价格表4 价格
这些文件最多可包含 30 000 条唯一记录。问题出在需要验证这些数据并在表格中返回给用户,表格中突出显示了某些单元格,其中值的价格变化大于 40% 的涨幅。
产品存储在多个表中,因此获取单行价目表值的查询最多可能需要一秒钟。最初我尝试将所有记录一起获取(这也需要一些时间),但如果文件有超过 10000 条记录,它会变得太大,sql server 无法处理。
目前我可以让它工作,但速度非常慢(1000 条记录需要 9 分钟来验证),而且我一次只验证一条记录。
如果有人对如何加快此过程有任何建议,或者对如何最好地处理如此庞大的验证过程有任何建议,我将不胜感激。只要资源友好且速度更快,我不会拒绝任何想法。
【问题讨论】:
-
我刚刚做了类似的东西。首先导入临时表中的所有文件。用必要的数据(如产品 ID 等)填充它,添加 indizes。然后验证只是编写 SQL-Command 将现有数据与临时数据进行比较。同样,您可以对导入数据进行分页和排序以显示给用户。或者说记录太多,点击这里下载完整报告。
-
不完全是一个答案(因此这是一个注释),但您能否将数据导入 SQL 服务器上的临时表,在 T-SQL 中运行比较查询,然后将数据返回到php?我猜想比较在 SQL 上会比在 PHP 上运行得更快,因为缺少从 SQL 到 PHP 等移动数据
-
谢谢大家,我很快就会试一试,听起来可能会奏效
标签: php sql sql-server-2012