Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 性能问题:在数据库中导入数据_Mysql_Sql_Database_Indexing - Fatal编程技术网

Mysql 性能问题:在数据库中导入数据

Mysql 性能问题:在数据库中导入数据,mysql,sql,database,indexing,Mysql,Sql,Database,Indexing,我正在使用MySQL v5.1 我的简单场景是,将大量数据从一个数据库中的一个表导入另一个数据库中的另一个表。而另一个数据库中的表(数据将插入的位置)将首先被截断 具体来说,假设我有两个数据库,分别名为“db_one”和“db_two” db\u one有一个名为db\u one\u cars的表,其中包含6000000条记录(数据量很大)。而db_two有一个名为db_two_cars的表,其中也包含大量数据 我将首先删除db\u two\u cars中的所有数据(截断表),然后将所有数据从d

我正在使用MySQL v5.1

我的简单场景是,将大量数据从一个数据库中的一个表导入另一个数据库中的另一个表。而另一个数据库中的表(数据将插入的位置)将首先被截断

具体来说,假设我有两个数据库,分别名为“db_one”和“db_two

db\u one有一个名为
db\u one\u cars
的表,其中包含6000000条记录(数据量很大)。而db_two有一个名为
db_two_cars
的表,其中也包含大量数据

我将首先删除
db\u two\u cars
中的所有数据(截断表),然后将所有数据从
db\u one\u cars
导入到
db\u two\u 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\u one\u carsdb\u two\u cars表均为InnoDB表,结构相同,
car\u id
用作
主键
公司名称
用作
多列键
客户
用作
多列键

我想加快这大量数据的导入,同时也希望性能良好在导入数据后查询表

我的问题:

  • 是否需要在我的SQL语句末尾有
    优化表db\u two\u cars
    ?为什么?(它会提高性能吗?我只是插入数据)
  • 我是否需要使用
    ALTER TABLE db\u two\u cars PACK\u KEYS=0?
    为什么?(它会提高性能吗)
  • 我还可以做些什么来提高速度和未来的查询性能

  • p.S.我指的性能包括加快数据导入速度,以及为将来的数据查询提供良好的性能

    以改进将数据导出到csv文件的过程

    并使用以下命令将此文件加载到新表:


    另一个加速的技巧你可以看看这个

    你的意思是加载数据填充比我使用的方式快得多?那么如何处理索引呢?关于处理索引,请参见:我仍然对我的第一个和第二个问题感兴趣,尽管加载数据填充可能是一个不错的选择。如果有人能回答我的前两个问题。