ฉันกำลังพยายามอัปเดตตาราง MySQL โดยอิงจากข้อมูลอื่น
original
ตารางของฉันดูเหมือนว่า:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
และtobeupdated
ตารางดูเหมือนว่า:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
ฉันต้องการที่จะปรับปรุงid
ในtobeupdated
กับid
จากoriginal
บนพื้นฐานvalue
(สตริงเก็บไว้ในVARCHAR(32)
เขต)
หวังว่าตารางที่อัปเดตจะมีลักษณะดังนี้:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
ฉันมีข้อความค้นหาที่ใช้งานได้ แต่ช้ามาก:
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
สิ่งนี้จะเพิ่มประสิทธิภาพ CPU ของฉันให้สูงสุดและในที่สุดก็นำไปสู่การหมดเวลาโดยมีเพียงส่วนหนึ่งของการอัปเดตที่ดำเนินการ (มีค่าหลายพันค่าที่จะจับคู่) ฉันรู้ว่าการจับคู่โดยvalue
จะช้า แต่นี่เป็นข้อมูลเดียวที่ฉันต้องจับคู่เข้าด้วยกัน
มีวิธีที่ดีกว่าในการอัปเดตค่าเช่นนี้หรือไม่? ฉันสามารถสร้างตารางที่สามสำหรับผลลัพธ์ที่ผสานได้หากจะเร็วกว่านี้
ฉันลองMySQL - ฉันจะอัปเดตตารางด้วยค่าจากตารางอื่นได้อย่างไร แต่มันไม่ได้ช่วยจริงๆ ความคิดใด ๆ ?
ขอบคุณล่วงหน้าสำหรับการช่วยเหลือมือใหม่ MySQL!