Because temporal DML statements may insert new rows into a table or logically delete rows from a table, a temporal table occupies more space than a nontemporal table. Additionally, tables with transaction time grow monotonically because rows are never physically deleted and removed from these tables (unless rows are explicitly removed using the NONTEMPORAL DELETE statement, which requires special privileges).
The increased number of row operations means that the SELECT and DML statements on temporal tables tend to be more resource intensive when compared to nontemporal tables. Because constraints defined on temporal tables are time aware, constraint checking is also more resource intensive on temporal tables than on nontemporal tables.
To mitigate the performance impacts from operations on temporal tables:
- Row partition temporal tables. Use the partitioning expressions recommended in this section.
- Define appropriate join indexes on temporal tables.