【发布时间】:2020-01-30 17:43:00
【问题描述】:
我必须将一个 MS Access 数据库导入 MySQL。其中一张表有近 1000 万条记录。我试图每次进行 4000 行的分页。问题是 MS Access 查询持续超过 35 秒(4000 行分页中的 35 秒大约是 24 小时......)。
这是 MS Access 连接的代码:
$dataSourceName = "odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=".$this->dbPath."; Pwd=";
$this->connection = new PDO($dataSourceName, "", "");
$sql = "SELECT TOP $pageSize * FROM $table WHERE $table.$primaryField > $lastIndex ORDER BY $table.$primaryField";
$rs = $this->connection->query($sql)->fetchAll(\PDO::FETCH_ASSOC);
$primaryField 在 Access 中是一个整数(主键)。
如何加快查询速度?我是不是做错了什么?
【问题讨论】:
-
请试试这个dev.mysql.com/doc/workbench/en/…然后让我们运行
-
你考虑过二叉树吗?
-
二叉树?不明白@Nelles
-
@nbk 此迁移不是一次,我必须定期以编程方式进行。如果更改,必须插入新记录并更新旧记录。我的算法已经准备好了,但是这段代码每个周期持续 35 秒
-
@Nelles 我研究过二叉树选项,这是我发现的
Not really, because Access (better: Jet) does not support recursive queries. SQL Server 2005 does, so perhaps the free Express Edition is something you should be looking at
标签: php mysql ms-access pdo etl