I have a view that returns 2 ints from a table using a CTE. If I query the view like this it runs in less than a second
SELECT * FROM view1 WHERE ID = 1
DECLARE @id INT = 1 SELECT * FROM View1 WHERE ID = @id
Do this
DECLARE @sql varchar(max) SET @sql = 'SELECT * FROM View1 WHERE ID =' + CAST(@id as varchar) EXEC (@sql)
Solves your problem