Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Optimalkan permintaan UPDATE MySQL yang berisi WHERE dan ORDER BY?

cobalah untuk tidak menggunakan ORDER-BY dan LIMIT untuk sejumlah kecil pembaruan.

    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

EDIT:1

pastikan Anda mengaktifkan indeks (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. Bagaimana agar skrip Shell dilanjutkan setelah reboot?

  2. Sistem peringkat suka/tidak suka sederhana di php dan MySQL

  3. NodeJS:Di mana menghubungkan ke database dalam kode?

  4. Haruskah saya meneruskan variabel $mysqli saya ke setiap fungsi?

  5. Cara memperbarui versi mysql di xampp (kesalahan dengan innodb_additional_mem_pool_size)