Use table variables only with small data sets or your stored procedure could get hanged during execution. Use temporary tables (CREATE TABLE #Table1) instead as they provide statistics to the database engine, they allow indexes that can support joining this temporary tables to other tables, they are more scalable.
You can also create temp tables as user tables in the database using a prefix tmp, instead of creating them on TempDB using table variables, but inserts/deletes/updates on this type of tables are logged on the database log and may execute slower.
Create appropriate indexes on your temporary tables and it should be fine.