sql >> Database >  >> RDS >> Mysql

Optimaliseer de MySQL UPDATE-query met WHERE en ORDER BY?

probeer ORDER-BY en LIMIT niet te gebruiken voor zo'n klein aantal updates.

    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

BEWERKEN:1

zorg ervoor dat de index is ingeschakeld (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. Hoe opeenvolgende rijen te vinden op basis van de waarde van een kolom?

  2. Hoe ListView vullen met db in de activamap?

  3. Gegevens uit meerdere tabellen in één rij krijgen terwijl u enkele waarden aaneenvoegt

  4. Wat zijn de bekende manieren om een ​​boomstructuur op te slaan in een relationele DB?