获得一个MySQL数据库,其中包含一个包含基于zipcode和门牌号的值的表。因此,主键被选择为zipcode和门牌号,因为这些是要搜索的字段。该数据库包含大约1000万条记录。
一个特定的邮政编码包含~100000个不同的门牌号码,插入速度极慢(每10000条记录1小时)。
编程语言是Java,我使用批处理10000中的预处理语句,并且自动提交为false。
表的结构如下:
+-----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-------------+------+-----+---------+-------+ | zipcode | varchar(6) | NO | PRI | NULL | | | house_no | int(11) | NO | PRI | NULL | | | sanddcode | varchar(45) | NO | | NULL | | | depot | varchar(3) | NO | | NULL | | | network_point | varchar(6) | NO | | NULL | | | region | varchar(3) | NO | | NULL | | | seq | int(11) | NO | | NULL | | | cluster_id | varchar(1) | NO | | NULL | | | strand_id | int(11) | NO | | NULL | | | strand_props_id | int(11) | NO | | NULL | | | version_id | int(11) | NO | PRI | NULL | | +-----------------+-------------+------+-----+---------+-------+
任何知道解决方案的人?谢谢!
答案 0 :(得分:1)
如果您不想从GUI加载数据,我建议使用sql loader,它可以在很短的时间内加载所有数据。
https://metacpan.org/pod/SQL::Loader::MySQL
http://www.roseindia.net/sql/mysql-example/loader-tutorial.shtml
答案 1 :(得分:1)
当您需要插入大量行时,首先删除密钥,然后插入所有数据,然后重新创建密钥可能会更快。这样,数据库就不需要花费大量时间来更新这些密钥。