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

oracle hurtigere personsøgningsforespørgsel

Jeg har faktisk ikke tilgængelighed af Oracle nu, men den bedste SQL-forespørgsel til personsøgning er helt sikkert følgende

select *
from (
        select rownum as rn, a.*
        from (
                select *
                from my_table
                order by ....a_unique_criteria...
            ) a
    )
where rownum <= :size
    and rn >  (:page-1)*:size

http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

For at opnå en ensartet personsøgning du bør bestille rækker ved hjælp af et unikt kriterium Hvis du gør det, undgår du at indlæse for side X en række, du allerede har indlæst for en side Y ( !=X ).

EDIT:

1) Bestil rækker ved hjælp af et unikt kriterium betyder at bestille data på den måde, at hver række vil beholde den samme position ved hver udførelse af forespørgslen

2) Et indeks med alle de udtryk, der bruges på ORDER BY-klausulen, vil hjælpe med at få resultater hurtigere, især for de første sider. Med det indeks behøver den udførelsesplan, der er valgt af optimeringsværktøjet, ikke at sortere rækkerne, fordi den vil returnere rækker, der ruller indekset efter dets naturlige rækkefølge.

3) I øvrigt er den hurtigste måde at sideresultater fra en forespørgsel på kun at udføre forespørgslen én gang og at håndtere hele flowet fra applikationssiden.



  1. En guide til MySQL Galera Cluster Streaming Replikering:Anden del

  2. Hvordan fjerner du dubletter fra kommasepareret liste med regex i Oracle, men jeg vil ikke have dubletter værdier?

  3. Omdøbning af indekser med sp_rename Procedure

  4. ScaleGrid DigitalOcean Support til MySQL, PostgreSQL og Redis™ nu tilgængelig