我有一个包含 10,000,000 多行的数据库表,我对其进行处理以创建一个新表。什么类型的存储引擎最适合读取?
目前我使用:
$sql = "UPDATE `packages_unsorted` SET `acv_return_viadetails` = '0';";
然后选择记录:
$sql = "SELECT * FROM `packages_unsorted` WHERE `acv_return_viadetails` = '0' LIMIT 1000;";
我收集主键id
放入名为 $ids 的数组中,然后处理记录并将数据写入 CSV 文件,以便在每 1000 行末尾导入。
然后我用以下内容更新 acv_return_viadetails 字段:
$sql = "UPDATE `packages_unsorted` SET `acv_return_viadetails` = '1' WHERE `id` IN ('".implode("','",$ids)."') LIMIT 1000;";
由于上面是对表的唯一写入,我每次都选择所有字段。我应该使用内存表或其他类型的存储引擎来加快速度吗?或者我可以引入任何其他优化来加快速度吗?
对于这样的操作,合理的 my.cnf 配置是什么。
提前致谢:)
最佳答案
您在 acv_return_viadetails 字段上有索引吗?
如果你想加快导入速度,我刚刚用C++编写了一个程序,可以在65秒内将300MB的文件导入mysql。也许您可以对其进行调整以供您使用。
关于php - 10,000,000行数据库的最佳存储引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8110433/