Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีอัปเดตคอลัมน์เดียวในตาราง MySQL อย่างมีประสิทธิภาพ

รูปแบบพื้นฐาน

UPDATE yourTableName SET yourColumnName = yourValue;

ตัวอย่างการใช้งาน

mysql> CREATE TABLE DemoTable1873 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(20)
);

mysql> INSERT INTO DemoTable1873(FirstName) VALUES('John'), ('Adam'), ('David'), ('Sam');

อัปเดตคอลัมน์ FirstName ทั้งตาราง

mysql> UPDATE DemoTable1873 SET FirstName = 'Robert';
Query OK, 4 rows affected (0.00 sec)

ผลลัพธ์

mysql> SELECT * FROM DemoTable1873;
+----+-----------+
| Id | FirstName |
+----+-----------+
|  1 | Robert    |
|  2 | Robert    |
|  3 | Robert    |
|  4 | Robert    |
+----+-----------+

เพิ่ม WHERE Clause (สำคัญมาก)

-- อัปเดตเฉพาะบางแถว
UPDATE DemoTable1873 SET FirstName = 'Robert' WHERE Id = 1;

-- อัปเดตหลายเงื่อนไข
UPDATE DemoTable1873 SET FirstName = 'Robert' WHERE Id IN (1, 3);

-- อัปเดตแบบมีเงื่อนไขซับซ้อน
UPDATE DemoTable1873 SET FirstName = 'Robert' 
WHERE Id > 2 AND FirstName != 'Robert';

Best Practices

  • ทดสอบด้วย SELECT ก่อน: SELECT * FROM table WHERE condition
  • Backup ก่อน UPDATE จำนวนมาก
  • ใช้ LIMIT ป้องกันอัปเดตผิดพลาด: UPDATE ... WHERE ... LIMIT 100
  • หลีกเลี่ยง UPDATE ทั้งตารางโดยไม่มี WHERE (Full Table Update)

Multi-column Update

UPDATE DemoTable1873 
SET FirstName = 'Robert', LastName = 'Smith', UpdatedAt = NOW()
WHERE Id = 1;

UPDATE กับ JOIN

UPDATE orders o
JOIN customers c ON o.customer_id = c.id
SET o.customer_name = c.name
WHERE o.customer_name IS NULL;

Performance Tips

  • Index บนคอลัมน์ใน WHERE Clause
  • Batch Update ขนาดใหญ่: แบ่งเป็น Chunk (LIMIT 1000)
  • หลีกเลี่ยง UPDATE คอลัมน์ที่มี Index บ่อยๆ (Index Maintenance Cost)