Jeżeli to zależałoby ode mnie...
Musisz spełniać wymagania bazy danych i aplikacji.
Dodanie automatycznie zwiększającej się liczby całkowitej lub kolumny o długim identyfikatorze do każdej tabeli, która służy jako klucz podstawowy, spełnia wymagania bazy danych.
Następnie należy dodać co najmniej jeden inny unikalny indeks do tabeli, który będzie używany przez aplikację. Byłby to indeks na identyfikator_pracownika, identyfikator_konta lub identyfikator_klienta itp. Jeśli to możliwe, indeks ten nie powinien być indeksem złożonym.
Wolałbym indeksy na kilku polach indywidualnie w stosunku do indeksów złożonych. Baza danych będzie używać indeksów pojedynczego pola za każdym razem, gdy klauzula where zawiera te pola, ale użyje złożonego tylko wtedy, gdy podasz pola w dokładnie prawidłowej kolejności - co oznacza, że nie może użyć drugiego pola w indeksie złożonym, chyba że podasz zarówno pierwszą, jak i drugą w klauzuli where.
Jestem za korzystaniem z indeksów obliczanych lub typu funkcji - i polecam używanie ich zamiast indeksów złożonych. Ułatwia to używanie indeksu funkcji, używając tej samej funkcji w klauzuli where.
To zadba o wymagania aplikacji.
Jest wysoce prawdopodobne, że inne indeksy inne niż podstawowe są w rzeczywistości odwzorowaniami wartości klucza indeksów na wartość klucza podstawowego, a nie rowid (). Pozwala to na fizyczne sortowanie i usuwanie bez konieczności ponownego tworzenia tych indeksów.