Tôi đang cố gắng cập nhật một bảng MySQL dựa trên thông tin từ một bảng khác.
original
Bảng của tôi trông giống như:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
Và tobeupdated
bảng có dạng như sau:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
Tôi muốn cập nhật id
trong tobeupdated
với id
từ original
dựa trên value
(chuỗi lưu trữ trong VARCHAR(32)
trường).
Bảng được cập nhật hy vọng sẽ giống như sau:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
Tôi có một truy vấn hoạt động, nhưng nó rất chậm:
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
Điều này làm tối đa CPU của tôi và cuối cùng dẫn đến thời gian chờ chỉ với một phần nhỏ các bản cập nhật được thực hiện (có vài nghìn giá trị để khớp). Tôi biết việc đối sánh theo value
sẽ chậm, nhưng đây là dữ liệu duy nhất tôi có để khớp chúng với nhau.
Có cách nào tốt hơn để cập nhật các giá trị như thế này không? Tôi có thể tạo bảng thứ ba cho các kết quả đã hợp nhất, nếu điều đó sẽ nhanh hơn?
Tôi đã thử MySQL - Làm cách nào để cập nhật bảng với các giá trị từ bảng khác? , nhưng nó không thực sự hữu ích. Bất kỳ ý tưởng?
Cảm ơn trước vì đã giúp một người mới làm quen với MySQL!