小编jon*_*ira的帖子

尝试使用REPLACE和AUTO_INCREMENT执行LOAD DATA INFILE

我正在尝试将文件加载到MySQL数据库,主键auto_incremented,如果我找到任何重复的行,我希望更新数据.但是,REPLACE关键字仅适用于主键,它是自动生成的,所以我卡住了.

如何能够拥有一个ID为auto_increments的表,同时能够使用LOAD DATA INFILE从文件中插入/更新数据?

这是表格

CREATE TABLE  `oxygen_domain`.`TEST` (
`TEST_ID` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(255) NOT NULL,
`VALUE` varchar(255) DEFAULT NULL,
PRIMARY KEY (`TEST_ID`,`NAME`,`VALUE`)
) 
Run Code Online (Sandbox Code Playgroud)

这是命令

LOAD DATA LOCAL INFILE 'C:/testData.txt'
REPLACE
INTO TABLE TEST
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(NAME, VALUE);
Run Code Online (Sandbox Code Playgroud)

这是样本数据

ignored name, ignored value
name1,value1
name2,value2
name3,value3
Run Code Online (Sandbox Code Playgroud)

用上述数据多次运行上述命令后所需的结束结果是

|TEST_ID |NAME |VALUE|
1, 'name1', 'value1'
2, 'name2', 'value2'
3, 'name3', 'value3'
Run Code Online (Sandbox Code Playgroud)

mysql replace auto-increment load-data-infile

16
推荐指数
1
解决办法
2万
查看次数

如何提高UNION ALL的MYSQL性能?

我正在优化一个涉及UNION ALL两个查询的查询.两种查询都经过优化,并且分别在不到一秒的时间内运行.但是,当我执行两者的并集时,计算所有内容大约需要30秒.

我不会与特定查询打扰你,因为他们得到他们进行了优化,因此,让我们给他们打电话Optimized_Query_1Optimized_Query_2

Optimized_Query_1的行数大约为100K

Optimized_Query_2的行数大约为200K

SELECT * FROM (
   Optimized_Query_1
UNION ALL
   Optimized_Query_2
) U 
ORDER BY START_TIME ASC
Run Code Online (Sandbox Code Playgroud)

我确实要求结果按顺序排列,但我发现无论有没有ORDER BY,查询都需要花费尽可能多的时间,所以不应该有任何区别.

显然UNION ALL在内存中创建了一个临时表,然后从那里得到最终结果,有什么方法可以解决这个问题吗?

谢谢

mysql optimization performance

7
推荐指数
1
解决办法
2056
查看次数