此查询需要从包含2000万的表中删除超过1700万行。
user@pc:~ $ alias e='echo alias is set'
user@pc:~ $ e
alias is set
user@pc:~ $ vim pygitup.sh
user@pc:~ $ cat pygitup.sh
#!/bin/bash
e
user@pc:~ $
user@pc:~ $ ./pygitup.sh
./pygitup.sh: line 2: e: command not found
user@pc:~ $
user@pc:~ $
user@pc:~ $ . ./pygitup.sh # <--- notice the leading dot
alias is set
user@pc:~ $
要花几个小时才能运行,我是否缺少可以加快速度的东西?
子选择本身要花几秒钟,我不明白为什么删除要花这么长时间。
答案 0 :(得分:1)
如果要删除的太多,请执行。 我建议您:
或
也用于查询
切勿对BIG数据使用IN子句。而是使用性能更高的
。基本脚本:
CREATE TABLE tmp_statements as
SELECT * FROM statements s where exists
(
select 1 FROM agreements a
WHERE
created < DATE_SUB(CURDATE(), INTERVAL 6 MONTH AND
s.agreement_id = a.agreement_id
));
DROP TABLE statements;
RENAME TABLE tmp_statements TO statements ;
--DONT FORGET TO RECREATE CREATE YOUR INDEXES, CONSTRAINTS;
答案 1 :(得分:1)
尝试重写第一条语句以使用Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client
。
EXISTS
然后在DELETE FROM statements
WHERE EXISTS (SELECT *
FROM agreements
WHERE agreements.id = statements.aggreement_id
AND agreements.created < date_sub(curdate(), interval 6 month));
上添加索引(如果尚未放置)。
agreements (id, created)
第二个在CREATE INDEX agreements_id_created
ON agreements
(id,
created);
上创建一个索引(如果还没有的话)。
agreements (created)
答案 2 :(得分:1)
使用“多表删除”代替通常效率不高的const {getproduct} = require('./webScrapper/getproduct');
let main = async () => {
let product = await getproduct('https://www.americanas.com.br/produto/134118928');
console.log('product:', product);
}
main();
。
讨论了一些用于大删除的技术here。
要删除表的85%,实际上最好用保留的15%新建一个表,然后将表交换到位。 (有关更多信息,请参见上面的链接。)