sql >> Databasteknik >  >> RDS >> Mysql

Mysql index konfiguration

Uppdatering:

Se den här artikeln i min blogg för en mer detaljerad analys av problemet:

När du utfärdar något som LIMIT 150000, 10 , betyder det att MySQL ska passera dessa 150,000 registrerar och hitta nästa 10 .

Att gå igenom indexet är långsamt i MySQL .

Även MySQL är inte kapabel att göra sena raduppslagningar.

Teoretiskt, om du gör ORDER BY id LIMIT 100000, 10 , det räcker med att använda indexet för att hitta värdena från 100000 till 100010 , leta sedan bara upp 10 rader som uppfyller det indexet och returnerar dem.

Alla större system utom MySQL är medvetna om det och letar bara upp raderna om värdena verkligen ska returneras.

MySQL , däremot slår upp varje rad.

Försök att skriva om din fråga så här:

SELECT  news.*
FROM    (
        SELECT  id
        FROM    news
        WHERE   cat_id='4'
        ORDER BY
                id DESC
        LIMIT 150000, 10
        ) o
JOIN    news
ON      news.id = o.id



  1. Intel Xeon skalbara processorer och SQL Server 2017

  2. Mysql-fråga med where och group by-sats

  3. Infoga i alla celler när poster är fler än en PHP

  4. GeoDjango på Windows:Kunde inte hitta GDAL-biblioteket / OSError:[WinError 126] Den angivna modulen kunde inte hittas