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

Kiểm tra giá trị khóa chính trước khi chèn có nhanh hơn sử dụng try-catch không?

Trên SQL 2008, bạn chỉ có thể sử dụng MERGE - đơn giản hơn nhiều so với một trong hai cách tiếp cận của bạn.

Ngoài ra, tôi không ở bên bạn về "TÔI KHÔNG muốn sử dụng các giao dịch vì lý do hiệu suất" - mọi lệnh DML bạn thực hiện dù sao cũng là một phần của một số giao dịch, vì vậy vẫn có các giao dịch ngay cả khi bạn không mở chúng một cách rõ ràng. Nếu bạn đang gặp sự cố về hiệu suất, bạn có thể đăng thêm chi tiết để nhận thêm trợ giúp về hiệu suất.

Chỉnh sửa:Nếu bạn cần chèn nhanh, đừng chèn từng hàng một. Thêm nhóm hàng và sử dụng MERGE - lợi thế bạn sẽ nhận được từ việc chèn hàng loạt hàng cùng một lúc sẽ vượt xa mọi cải tiến nhỏ mà bạn sẽ nhận được từ việc tối ưu hóa tốc độ thêm một hàng.

Dù sao, lý luận lý thuyết về bất cứ điều gì liên quan đến cơ sở dữ liệu thường là không đủ tốt. Bạn thực sự cần phải làm điểm chuẩn để xác định cái gì nhanh hơn. Những gì bạn đang gọi là "truy vấn không cần thiết cho một dòng hiện có" có thể hoàn toàn không đáng kể và bạn không biết liệu đây có phải là trường hợp này hay không cho đến khi bạn đo nó trong điều kiện thực tế.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ảnh chụp nhanh cơ sở dữ liệu SQL Server -3

  2. SQL Server 2016

  3. Cập nhật bảng bằng cách sử dụng JOIN trong SQL Server?

  4. EAV qua SQL Server

  5. CS2001 Thiếu AssemblyAttributes.cs khi thực thi gói SSIS được triển khai tới máy chủ