Lukas Eder explains the costs of surrogate keys on tables intended to join multiple tables together:
There is really no point in adding another column
FILM_ACTOR_ID
orID
for an individual row in this table, even if a lot of ORMs and non-ORM-defined schemas will do this, simply for “consistency” reasons (and in a few cases, because they cannot handle compound keys).Now, the presence or absence of such a surrogate key is usually not too relevant in every day work with this table. If you’re using an ORM, it will likely make no difference to client code. If you’re using SQL, it definitely doesn’t. You just never use that additional column.
But in terms of performance, it might make a huge difference!
Lukas makes a good argument here.