Wenn es nach mir ginge ...
Sie müssen die Anforderungen der Datenbank und Ihrer Anwendungen erfüllen.
Durch Hinzufügen einer automatisch inkrementierenden Ganzzahl- oder langen ID-Spalte zu jeder Tabelle als Primärschlüssel werden die Datenbankanforderungen berücksichtigt.
Anschließend fügen Sie der Tabelle mindestens einen weiteren eindeutigen Index zur Verwendung durch Ihre Anwendung hinzu. Dies wäre der Index für employee_id oder account_id oder customer_id usw. Wenn möglich, sollte dieser Index kein zusammengesetzter Index sein.
Ich würde Indizes für mehrere Felder einzeln gegenüber zusammengesetzten Indizes bevorzugen. Die Datenbank verwendet die einzelnen Feldindizes immer dann, wenn die where-Klausel diese Felder enthält. Sie verwendet jedoch nur einen Verbund, wenn Sie die Felder in genau der richtigen Reihenfolge angeben. Dies bedeutet, dass das zweite Feld in einem zusammengesetzten Index nur verwendet werden kann, wenn Sie dies angeben sowohl die erste als auch die zweite in Ihrer where-Klausel.
Ich bin alle für die Verwendung von berechneten oder Funktionstyp-Indizes - und würde empfehlen, sie über zusammengesetzte Indizes zu verwenden. Es macht es sehr einfach, den Funktionsindex zu verwenden, indem dieselbe Funktion in Ihrer where-Klausel verwendet wird.
Dies kümmert sich um Ihre Anwendungsanforderungen.
Es ist sehr wahrscheinlich, dass andere nicht-primäre Indizes tatsächlich Zuordnungen dieses Indexschlüsselwerts zu einem Primärschlüsselwert sind, nicht zu Rowid (). Dies ermöglicht physische Sortiervorgänge und Löschvorgänge, ohne dass diese Indizes neu erstellt werden müssen.