Es gibt keinen Overhead in der Datenbank verursacht durch Identitätsspalten. Ich denke, einige der Behauptungen in diesem Artikel sind fehlerhaft. Die Aussage:
„Identität ID Generation nicht Vorbelegung nicht unterstützt, erfordert so eine Auswahl nach jedem Einsatz“
könnte für die ORM, aber es ist sicherlich nicht wahr, von der Datenbank wahr sein. Die meisten Datenbanken unterstützen die RETURNING-Klausel, so dass der erzeugte Wert von einer Identitätsspalte ist trivialerweise als Teil des Einsatzes abgerufen, das heißt:
insert into MY_TABLE
values (...)
returning ID_COLUMN into :my_host_variable
so klingt es eher wie sie für eine ORM entscheiden, die keine ausreichende macht Job.
Auch die Aussage
„In Oracle12c Abwurf von Tabellen nicht die Sequenz mit der Identität zugeordnet Drop Spalte abgestanden Sequenzen in der Datenbank zu verlassen“
ist trivialerweise gezeigt, falsch zu sein:
SQL> create table t (x int generated as identity);
Table created.
SQL> select sequence_name from user_sequences;
SEQUENCE_NAME
--------------------------------------------------------
ISEQ$$_159461
SQL> drop table t purge;
Table dropped.
SQL> select sequence_name from user_sequences;
no rows selected.
, die auch dazu dient zu demonstrieren, dass IDENTITY-Spalten (in Oracle) sowieso als Sequenzen implementiert sind. So
„Wenn die Datenbank-Features bietet Sequenzen zu verwenden, sie verwendet werden sollen. In Datenbanken, die bieten keine Sequenzen Identitätsspalten verwendet werden müssen“
ist eine fragwürdige Behauptung.
"GENERATED AS IDENTITY" erfolgt direkt in der Datenbank, wenn ein Datensatz eingefügt wird, so dass es keine Datenbank-Roundtrips beinhaltet. –