我正在使用 MySQL v5.1 。
我的简单方案是,我想从一个数据库中的表导入大量数据到另一个数据库中的另一个表。并且将首先截断另一个数据库中的表(将要插入数据的位置)。
详细说,我说有两个数据库,分别名为“ db_one ”和“ db_two ”。
db_one 有一个名为db_one_cars
的表,其中包含 6,000,000条记录(这是一项大量数据)。虽然 db_two 有一个名为db_two_cars
的表,其中也包含大量数据。
我将首先删除db_two_cars
中的所有数据(截断表格),然后将所有数据从 db_one_cars
导入 db_two_cars
。 (注意:这两个表分别位于两个数据库中)。
所以,我创建了一个包含以下内容的sql文件:
TRUNCATE TABLE db_two_cars;
ALTER TABLE db_two_cars DISABLE KEYS;
INSERT INTO db_two_cars (car_id, name, customer, company_name)
SELECT id, CONCAT('c-', name), customer, company_name FROM db_one.db_one_cars;
ALTER TABLE db_two_cars ENABLE KEYS;
db_one_cars 和 db_two_cars 表都是InnoDB表并具有相同的结构,car_id
用作primary key
,company_name
用作multi-column key
,customer
用作multi-column key
。
我希望加速进行大量数据导入,并且还希望良好的性能在压缩数据后查询表。
我的问题:
OPTIMIZE TABLE db_two_cars
吗?为什么? (它会改善性能吗?我只是插入数据)ALTER TABLE db_two_cars PACK_KEYS = 0 ?
吗?为什么? (它会改善表现)P.S。我的意思是包括加快数据导入速度和未来数据查询的良好性能
答案 0 :(得分:1)