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

Cập nhật số lượng lớn hàng - SQL Server 2005

Bạn có cột nhận dạng được lập chỉ mục trong bảng mục tiêu không? Đây là một trong số ít trường hợp tôi thực sự thích sử dụng vòng lặp WHILE. Vấn đề chính với giải pháp trong liên kết bạn đã đăng là việc sử dụng chỉ mục không hợp lệ.

    DECLARE @START INT, @FINISH INT, @LOOPEND INT
    SELECT @START = 1, @FINISH = 5000, @LOOPEND = MAX(ID)
    from Bla 

    WHILE @START <= @LOOPEND
    BEGIN
        update a
        set XML = b.xml
        from Bla as a
        inner join #temp as b on a.i = b.i
        WHERE a.ID BETWEEN @START AND @FINISH

        SET @START = @FINISH + 1
        SET @FINISH = @FINISH + 5000
    END

Trong trường hợp bạn có khóa thay thế (cột nhận dạng là khóa chính), điều này không quá phổ biến, điều này sẽ gây ra một tìm kiếm chỉ mục đơn giản trên khóa chính và có thể điều chỉnh đơn giản bằng số lượng tăng trưởng (trong ví dụ là 5000)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiểu sơ đồ bế tắc của SQL Server

  2. Lỗi:Loại cột DOB xung đột với loại cột khác được chỉ định trong danh sách UNPIVOT

  3. Truyền ký hiệu khoa học (từ varchar -> số) trong một chế độ xem

  4. Ưu điểm và nhược điểm của việc triển khai môi trường đám mây kết hợp

  5. Cách sử dụng API SSIS để đọc một gói và xác định chuỗi nhiệm vụ từ mã (PrecedenceConstraints)