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

INDSÆT med ORDER på Oracle

Det kan du ikke kontrollere pålideligt, i hvilken rækkefølge Oracle henter rækken i en tabel uden en ORDER BY .

Desuden uden /*+APPEND*/ tip, Oracle vil gemme rækkerne fysisk i et heap-bord, hvor der er plads, som måske ikke er for enden af ​​bordet! Du tror måske, at Oracle indsætter dem sekventielt, men enhver DML eller samtidig aktivitet (indsættelse af 2+ sessioner) kan give en anden fysisk organisation.

Du kan bruge en INDEX ORGANIZED-tabel til at gemme rækkerne i rækkefølgen af ​​PK. De fleste simple forespørgsler derefter på den tabel vil producere et sorteret sæt rækker. Dette vil dog ikke garantere, at oracle vil vælge rækkerne i den rækkefølge, hvis du ikke angiver en BESTILLING EFTER (afhængigt af forespørgslen og adgangsstien, kan rækkerne komme i vilkårlig rækkefølge).

Du kan også bruge en visning med en ordre efter, dette er nok dit bedste bud, hvis du ikke kan røre ved applikationen (omdøb bordet, opret en visning med navnet på bordet, lad applikationen tro, at den forespørger i bordet). Jeg ved ikke, om det er muligt i dit tilfælde.



  1. Microsoft Access Table Tips – Tricks og retningslinjer Del 2

  2. Postgresql enum hvad er fordelene og ulemperne?

  3. SQL SERVER – Et trick til at håndtere dynamisk SQL for at undgå SQL-injektionsangreb?

  4. SQL mellem ikke inklusive