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

Cập nhật bảng MySQL theo từng phần

Tôi đã kết thúc với quy trình được liệt kê dưới đây. Nó hoạt động nhưng tôi không chắc liệu nó có hiệu quả với tất cả các truy vấn để xác định các phạm vi liên tiếp hay không. Nó có thể được gọi với các đối số sau (ví dụ):

call chunkUpdate('SET var=0','someTable','theKey',500000);

Về cơ bản, đối số đầu tiên là lệnh cập nhật (ví dụ như "set x =..."), theo sau là tên bảng mysql, tiếp theo là khóa số (số nguyên) phải là duy nhất, tiếp theo là kích thước của khối được xử lý. Chìa khóa nên có một chỉ mục cho hiệu suất hợp lý. Biến "n" và câu lệnh "select" trong mã bên dưới có thể bị xóa và chỉ để gỡ lỗi.

delimiter //
CREATE PROCEDURE chunkUpdate (IN cmd VARCHAR(255), IN tab VARCHAR(255), IN ky VARCHAR(255),IN sz INT)
BEGIN
  SET @sqlgetmin = CONCAT("SELECT MIN(",ky,")-1 INTO @minkey FROM ",tab); 
  SET @sqlgetmax = CONCAT("SELECT MAX(",ky,") INTO @maxkey FROM ( SELECT ",ky," FROM ",tab," WHERE ",ky,">@minkey ORDER BY ",ky," LIMIT ",sz,") AS TMP"); 
  SET @sqlstatement = CONCAT("UPDATE ",tab," ",cmd," WHERE ",ky,">@minkey AND ",ky,"<[email protected]");
  SET @n=1;

  PREPARE getmin from @sqlgetmin;
  PREPARE getmax from @sqlgetmax;
  PREPARE statement from @sqlstatement;

  EXECUTE getmin;

  REPEAT
    EXECUTE getmax; 
    SELECT cmd,@n AS step, @minkey AS min, @maxkey AS max;
    EXECUTE statement;
    set @[email protected];
    set @[email protected]+1;
  UNTIL @maxkey IS NULL
  END REPEAT; 
  select CONCAT(cmd, " EXECUTED IN ",@n," STEPS") AS MESSAGE;
END//



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để kết nối với cơ sở dữ liệu MySQL từ iPhone?

  2. Lỗi phân tích cú pháp PHP:lỗi cú pháp, T_ENCAPSED_AND_WHITESPACE không mong muốn, chờ T_STRING hoặc T_VARIABLE hoặc T_NUM_STRING

  3. MySQL:Truy xuất ID trong đó chính xác 2 hàng chia sẻ cùng một ID nhưng có userID khác nhau

  4. Chèn bản ghi vào bảng MySQL bằng Java

  5. Tự động hoàn thành bằng Flask, Jquery, Javascript, MySQL