UPDATE và DELETE cũng cần Index

UPDATE và DELETE cũng phải TÌM ROW trước khi thao tác. Phần “tìm row” hoàn toàn giống SELECT và cần index y hệt.

Mẹo test performance

Viết lại thành SELECT để kiểm tra trước:

-- Thay vì test trực tiếp:
DELETE FROM logs WHERE created_at < '2024-01-01';
 
-- Viết thành SELECT để kiểm tra:
SELECT * FROM logs WHERE created_at < '2024-01-01';
-- Nếu SELECT chậm → DELETE cũng chậm → cần index trên (created_at)

Lưu ý

  • Mọi nguyên tắc index cho WHERE của SELECT áp dụng nguyên vẹn cho WHERE của UPDATE/DELETE.
  • Ngược lại, bản thân UPDATE/DELETE còn phải cập nhật các index liên quan sau khi tìm thấy row → xem Index Write Overhead.
  • Xóa data lớn theo thời gian (log cũ…) → DELETE từng đợt rất chậm; cân nhắc Partitioning để DROP partition trong tích tắc.

Liên quan