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

kunde.pk_name joining transactions.fk_name vs. kunde.pk_id [serial] joining transactions.fk_id [heltal]

De har ret. At deltage i et CHAR(30) tekstfelt - især et, der indeholder personnavnedata - vil være langsomt, groft ineffektivt og utrolig skrøbeligt. Folk ændrer deres navne (ægteskab er det indlysende eksempel), og flere mennesker kan have det samme navn.

Du vil oprette passende indekser på dine tabeller for at understøtte den rækkefølge, du ønsker data skal vises i, og glemme klyngedannelse. Din præstationsoptimeringsprocedure lyder som en katastrofe, der leder efter et sted at ske. Beklager, men at droppe/oprette tabellerne på den måde beder om problemer.

Jeg ville starte med et UNIKT INDEX på kunde.id, et UNIKT INDEKS på transaktion.billet_nummer og et INDEKS (for ydeevne snarere end kardinalitet, så det er ikke så vigtigt at håndhæve unikhed) på transaktioner (id, billetnummer DESC), og tage det fra der. Data returneres fra transaktionstabellen i den rækkefølge, de vises i indekset.

Jeg vil kun overveje klyngedannelse, når alle andre muligheder for forespørgselsoptimering er udtømt.



  1. 2 måder at returnere ikke-numeriske værdier i SQLite

  2. Big Data med PostgreSQL og Apache Spark

  3. Henter ukendt primær nøgle til tabellen, mens ID'et er der

  4. Codds regler i SQL