Oracle
 sql >> Baza danych >  >> RDS >> Oracle

customer.pk_name dołączanie do transakcji.fk_name vs. customer.pk_id [serial] dołączanie do transakcji.fk_id [liczba całkowita]

Mają rację. Łączenie w polu tekstowym CHAR(30) – szczególnie w polu zawierającym dane osobowe – będzie powolne, rażąco nieefektywne i niezwykle delikatne. Ludzie zmieniają swoje imiona (małżeństwo jest oczywistym przykładem), a wiele osób może mieć to samo imię.

Chcesz utworzyć odpowiednie indeksy w tabelach, aby obsługiwać kolejność, w której mają się pojawiać dane, i zapomnieć o klastrowaniu. Twoja procedura optymalizacji wydajności brzmi jak katastrofa szukająca miejsca, w którym może się wydarzyć. Przepraszamy, ale upuszczanie/tworzenie takich tabel to proszenie się o kłopoty.

Zacząłbym od UNIQUE INDEX na customer.id, UNIQUE INDEX na transaction.ticket_number i INDEX (dla wydajności, a nie kardynalności, więc egzekwowanie wyjątkowości nie jest strasznie ważne) dla transakcji (id, ticket_number DESC) i wziąłbym go z tam. Dane są zwracane z tabeli transakcji w kolejności, w jakiej pojawiają się w indeksie.

Rozważałbym grupowanie tylko wtedy, gdy wszystkie inne możliwości optymalizacji zapytań zostałyby wyczerpane.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć zablokowane wiersze w Oracle

  2. Hibernate Create Criteria, aby dwukrotnie dołączyć do tego samego stołu — wypróbowano 2 podejście z błędem 2 różnic

  3. Obejście dla ORA-00997:nielegalne użycie typu danych LONG

  4. Funkcja LEAST() w Oracle

  5. Wyjątek ORA-08103:obiekt nie istnieje już przy użyciu setfetchsize w Hibernate