Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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/MySQL在3+;百万行_Php_Mysql - Fatal编程技术网

使用php/MySQL在3+;百万行

使用php/MySQL在3+;百万行,php,mysql,Php,Mysql,我的任务是创建一个网页,查询一个有300万行的表。 我不想打印所有行,而是创建一个报告,列出与另一项出现在同一篮子中的前10项 我以前从未使用过php来处理这么多的数据,所以我的问题不是关于进行计算的实际编码,而是关于计算的关键考虑因素是什么 如果php或sql完成大部分计算, 该页面不会更新任何记录,只会根据记录的值和频率进行计算 就超时问题、硬件而言,这有多贵。等 这个页面的加载量不会很大,我想每天不到1000个。我想你需要注意的是 MySQL:为需要执行where或join的列创建适当的索

我的任务是创建一个网页,查询一个有300万行的表。 我不想打印所有行,而是创建一个报告,列出与另一项出现在同一篮子中的前10项

我以前从未使用过php来处理这么多的数据,所以我的问题不是关于进行计算的实际编码,而是关于计算的关键考虑因素是什么 如果php或sql完成大部分计算, 该页面不会更新任何记录,只会根据记录的值和频率进行计算 就超时问题、硬件而言,这有多贵。等


这个页面的加载量不会很大,我想每天不到1000个。

我想你需要注意的是

MySQL:为需要执行where或join的列创建适当的索引,使用explain查看查询是否使用了正确的索引。您可能还想查看分区表,但对于300万人来说,我不认为这是必要的,除非您的数据保持快速增长


PHP:确保您没有将太多数据加载到内存中,您可以使用xdebug转储内存使用情况文件,以检查是否存在速度减慢问题。

如果不将太多数据加载到内存中,如果我发现自己处于这种情况,会将操作分解为步骤,打印然后返回,下一部分数据是解决这个问题的方法吗?是的,那么您需要按限制查询数据,并将其分解为不同的主干。如果有人试图解决PHP运行时内存中300万条记录之间的关联,然后他们的脚本就应该死了。这取决于你们是想要实时数据还是在特定的计算时间间隔后批量更新数据。是的,要检索数据,必须使用分页和索引数据,对其进行数据筛选。其余的就可以了。你真的不想每次需要运行时都根据基础数据来解析这个查询。使用批处理或按需缓存填充表示组合的新表(正确索引)。