Hi, as you pointed out that the results of the (table) udf will not be joined to anything then there shoud not be any impact on performance.
To try to explain a little about why UDFs can be perceived as slow (in fact just used in the wrong way) consider the following exmaple;
We have table A and Table B. Say we had a join like
SELECT
A.col1,
A.col2,
B.ColWhatever
FROM
A
JOIN B ON A.aid = b.fk_aid
WHERE
B.someCol = @param1 AND A.anotherCol = @param2
In this case, SQL Server will do it's best to return the results in the most performant way it knows how. A major factor in this is reducing the disk reads. So - it will use the conditions in the JOIN and where clause to evaluate (hopefully with an index) how many rows to return.
Now - say we extract some part of the conditions used to restirct the amount of data returned to a UDF. Now - the query optimizer can no longer pull back the minimum amount of rows from the disk, it can only deal with the conditions it provides. In a nutshell - a table udf is always evaluated and the data is returned before being returned to the main sproc, so, if there were some other criteria in the original join that could have caused fewer disk reads - this will only be applied to data after being pulled into the sproc.
So say we create a UDF to select the rows from table B that match the where clause. If there are 100k rows in table B and 50% of them meet the criteria of the where clause - then all these rows will be returned to the sproc for comparison with table A. Now if only 10% of those have matches in table A now we are only talking 5% of table B that we want to work with, but we have already pulled back 50%, the majority of which we do not want!
If this comes across as complete gibberish apologies - please let me know!