Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách hiệu quả nhất để thực hiện câu lệnh SQL 'CHÈN NẾU KHÔNG TỒN TẠI'

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 selectinsert , 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hoạt động của hàm EXPORT_SET () trong MySQL

  2. EF Core 2.0 Identity - Thêm thuộc tính điều hướng

  3. COUNT trong một truy vấn với nhiều THAM GIA và một NHÓM THEO KHOẢN

  4. Chọn hàng trước mysql?

  5. Trên RDS, tôi có thể tạo Bảng trong Bản sao đã đọc không có trên Bản chính không?