【发布时间】:2019-11-27 07:04:26
【问题描述】:
我想将一个表的列复制到另一个表的列,条件是两个员工 id 应该相等,超过 30 万条记录。
下面是我的查询
UPDATE emp SET emp.address = (
SELECT emp_address
FROM address
WHERE emp.emp_id=address.emp_id LIMIT 1
);
我从过去 1 小时开始执行此查询,但进程仍在进行中,我已在“DB Browser for SQLite”上执行此查询。
我犯了什么错误吗?还是sqlite浏览器有问题?
【问题讨论】:
-
我可以建议检查
emp.address是否有任何索引,如果是,请删除它们。并检查address.emp_id是否有任何索引,如果没有则添加一个。如果仍然需要很长时间,您可以添加一个临时字段作为更新标志,并尝试分块更新您的数据库。或者您可以尝试增加页面和缓存大小并关闭日志。 -
emp.emp_id 上有一个索引,现在我已经删除并执行了查询让我检查它是否工作
-
不,你不应该删除它。它会减慢您的查找时间。仅删除对列执行更新的索引。
-
我已经尝试过删除和不删除两种方式,但它不起作用,我等了 1.5 小时但没有任何反应,所以我退出了