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

Tối ưu hóa truy vấn CẬP NHẬT MySQL có chứa WHERE và ORDER BY?

cố gắng không sử dụng ORDER-BY và LIMIT cho số lượng bản cập nhật nhỏ như vậy.

    UPDATE companies t1
    join
    (
        SELECT c.id,@RowNum:[email protected]+1 AS RowID
        FROM companies c, (SELECT @RowNum := 0)r
        WHERE c.crawling = 0 AND c.url_host IS NOT NULL
        ORDER BY c.last_crawled ASC
    )t2
    ON t2.RowID=1 AND t1.id=t2.id
    SET t1.crawling = 1

CHỈNH SỬA:1

đảm bảo bạn có chỉ mục trên (last_crawled ASC, id ASC)

    UPDATE companies t1
    join
    (
        Select ID,RowID
        From
        (
            SELECT c.id,@RowNum:[email protected]+1 AS RowID
            FROM companies c, (SELECT @RowNum := 0)r
            WHERE c.crawling = 0 AND c.url_host IS NOT NULL
            ORDER BY c.last_crawled ASC
        )t2
        WHERE ROWID=1
    )t3
    ON t1.id=t3.id
    SET t1.crawling = 1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đăng kết quả MySQL bằng AJAX qua jQuery

  2. mySQL:bộ ký tự utf8 trên bảng chỉ mục và lỗi khóa trùng lặp

  3. Làm cách nào để tìm kiếm chuỗi con Soundex () trong MySQL?

  4. Hàm PHP &MySQL xóa các danh mục chưa được chọn khỏi sự cố cơ sở dữ liệu

  5. Công cụ tốt để trực quan hóa lược đồ cơ sở dữ liệu?