does it recalculate every time I SELECT from the query
If that column is references in a query then the calculation will be performed at least once during the query. This is (yet another) good reason to avoid select * ...
- if you have a query against the users
table that doesn't reference the fullname
column then no calculation will be performed.
Would it help if the computed column is PERSISTED
Obviously, the calculation doesn't need to be performed, but you're now paying for a small amount of storage and I/O costs in having the retrieve the persisted data.
But in short, don't try to second guess these things. If this is a common calculation, create a computed column for it. Later, once you have performance goals and can measure your performance, you can assess whether it has a meaningful performance issue and whether the persisted
trade off (calculation vs storage) has any effect on this.