sql >> Databáze >  >> RDS >> Oracle

Oracle a stránkování

Váš dotaz bude muset odpočítat prvních 90M záznamů, abyste získali dalších 100 , takže sotva existuje prostor pro zlepšení.

Nevidím ORDER BY klauzule ve vašem poddotazu, ale pravděpodobně ji máte. V tomto případě na něm možná budete chtít vytvořit index.

A otázka:opravdu vaši uživatelé proklikají 900K stránky před stížností na výkon?

Aktualizace:

Pokud potřebujete nejnovější stránku, musíte přepsat ORDER BY sloupec v sestupném pořadí:

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

a vytvořte index na record_ordering_column

Všimněte si, že míchám rownum 's z vnořených dotazů ke zlepšení výkonu.

Další podrobnosti najdete v tomto článku na mém blogu:



  1. Integrace SQLCipher s greenDAO

  2. SQLSTATE[HY000]:Obecná chyba:1298 Neznámé nebo nesprávné časové pásmo:okna 'UTC'

  3. Jak zobrazit rozevírací seznam s předem vybranou možností

  4. Mohou existovat omezení se stejným názvem v DB?