sql >> Database teknologi >  >> RDS >> Oracle

Oracle og paginering

Din forespørgsel skal tælle fra de første 90M poster for at få den næste 100 , så der er næppe plads til forbedringer.

Jeg kan ikke se en ORDER BY klausul i din underforespørgsel, men sandsynligvis har du den. I dette tilfælde vil du måske oprette et indeks på det.

Og et spørgsmål:klikker dine brugere virkelig gennem 900K sider, før du klager over ydeevne?

Opdatering:

Hvis du har brug for den seneste side, skal du omskrive din ORDER BY kolonne i faldende rækkefølge:

SELECT  *
FROM    (
        SELECT  rownum rnum, f.*
        FROM    findings f
        ORDER BY
                record_ordering_column DESC
        ) 
WHERE   rnum > 900
        AND rownum <= 100

og opret et indeks på record_ordering_column

Bemærk, at jeg blander rownum 's fra de indlejrede forespørgsler for at forbedre ydeevnen.

Se denne artikel i min blog for flere detaljer:



  1. PHP søgescript til mySQL database, kun 3 bogstaver virker

  2. Hvordan deaktiverer jeg SQLAlchemy-caching?

  3. Returner en rangering fra flere tabeller med mySQL

  4. GROUP_CONCAT returnerer NULL, hvis en værdi er NULL