insert ignore
là phương pháp tốt hơn, vì một số lý do.
Về mặt hiệu suất, chỉ có một truy vấn đang được biên dịch và thực thi, thay vì hai. Điều này giúp tiết kiệm chi phí di chuyển nội dung vào và ra khỏi cơ sở dữ liệu.
Về mặt bảo trì, chỉ có một truy vấn sẽ dễ bảo trì hơn, bởi vì logic tất cả đều ở một nơi. Nếu bạn đã thêm where
chẳng hạn, bạn sẽ có nhiều khả năng bỏ lỡ thêm nó trong hai truy vấn riêng biệt.
Về độ chính xác, chỉ một truy vấn sẽ không có (hoặc ít nhất là nhiều hơn) cơ hội cho các điều kiện cuộc đua. Nếu một hàng được chèn vào giữa select
và insert
, thì bạn vẫn sẽ gặp lỗi.
Tuy nhiên, tốt hơn insert ignore
là chèn insert . . . on duplicate key update
. Sau này chỉ tránh lỗi cho các vấn đề trùng lặp. insert ignore
có thể đang bỏ qua những lỗi mà bạn thực sự quan tâm.
Nhân tiện, dù sao thì bạn cũng nên kiểm tra lỗi từ câu lệnh.