3

得到一个 MySQL 数据库,其中包含一个基于邮政编码和门牌号的值的表。因此,主键被选择为邮政编码和门牌号码,因为这些是要搜索的字段。该数据库包含大约 1000 万条记录。

一个特定的邮政编码包含约 100000 个不同的门牌号码,并且插入速度极慢(每 10000 条记录需要 1 小时)。

编程语言是 Java,我在一批 10000 中使用准备好的语句,自动提交为 false。

表的结构如下:

+-----------------+-------------+------+-----+---- -----+--------+
| 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 |
+-----------------+-------------+------+-----+---- -----+--------+
| 邮政编码 | varchar(6) | 否 | 优先级 | 空 | |
| 房子_no | 整数(11) | 否 | 优先级 | 空 | |
| 沙码 | varchar(45) | 否 | | 空 | |
| 仓库 | varchar(3) | 否 | | 空 | |
| 网络点 | varchar(6) | 否 | | 空 | |
| 地区 | varchar(3) | 否 | | 空 | |
| 序列 | 整数(11) | 否 | | 空 | |
| cluster_id | varchar(1) | 否 | | 空 | |
| strand_id | 整数(11) | 否 | | 空 | |
| strand_props_id | 整数(11) | 否 | | 空 | |
| 版本号 | 整数(11) | 否 | 优先级 | 空 | |
+-----------------+-------------+------+-----+---- -----+--------+

有谁知道这个问题的解决方案?谢谢!

4

2 回答 2

1

当您需要插入大量行时,首先删除键,然后插入所有数据,然后重新创建键可能会更快。这样数据库就不需要花费大量时间来更新这些键。

于 2012-12-14T14:57:41.477 回答
1

如果您不尝试从 GUI 加载数据,我会推荐 sql loader,它可以在相当快的时间内加载所有数据。

https://metacpan.org/pod/SQL::Loader::MySQL

http://www.roseindia.net/sql/mysql-example/loader-tutorial.shtml

于 2012-12-14T14:54:13.310 回答