我有更新这样做:
Update Table1 as T1
Inner Join Table2 as T2
On T1.X=T2.Y
Set T1.A=T2.B;
表1大约有10,000,000条记录 表2约有40,000条记录 我有T1.X和T2.Y
的索引自然,这需要永远。有没有办法减少时间?
例如,我理解连接不是表记录的总和,而是产品。有没有办法(如果这是真的)在步骤中逐步加入1000个Table1记录?
答案 0 :(得分:0)
显然,Join适用于两个完整的表。所以我修改了我的查询:
Update Table1 as T1
Inner Join (Select T2.Y,T2.B from Table2) as T2
On T1.X=T2.Y
Set T1.A=T2.B;
我还没有再次运行整个查询,但当我将其限制为测试时,其中T1.ID <100&#39;当我添加Select语句时,它从18秒减少到1秒。
UPDATE 我还测试过一次推送有限的#个记录。足够多的10条记录需要1秒,1000条记录需要6秒,10000条需要250秒。因此,我将在一段时间内测试嵌套,以便一次遍历1000条记录。
答案 1 :(得分:0)
它没有回答您的问题,但这里有一种使用您的逻辑使其更快的方法:
UPDATE table_A a
内连接 (SELECT TRUNCATE(lat,3) AS lat, TRUNCATE(lon,3) AS lon, address
FROM table_B) b
设置 a.address
= b.address
其中 TRUNCATE(a.lat,3) = b.lat AND TRUNCATE(a.lon,3) = b.lon AND a.Unknown parameter in input: "KeyConditionExpression", must be one of: TableName, IndexName, AttributesToGet, Limit, Select, ScanFilter, ConditionalOperator, ExclusiveStartKey, ReturnConsumedCapacity, TotalSegments, Segment, ProjectionExpression, FilterExpression, ExpressionAttributeNames, ExpressionAttributeValues, ConsistentRead
为 NULL;
当您需要对数据进行处理以使用它时,不要在“位置”中转换它们,而是在您将它们从表中取出时进行转换。