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
- Composite Index và Nguyên tắc Phễu - thiết kế index cho WHERE
- Kỹ thuật thao tác dữ liệu hiệu quả - UPDATE JOIN, RETURNING, xóa trùng lặp
- Partitioning - xóa data lớn đúng cách