Or isn't always slow, it depends.
If the conditions are on the same table and it's also indexed an or will not be slow.
But if the OR conditions are on different tables in a join, the server will have to join all rows and filter the result, which can be extremely slow.
In this case one of the conditions isn't even on a column but on a variable.
One common workaround is to convert the query into two queries with a union between them. This allows the server to use indexes and to filter on the fly.
SELECT *
FROM Table t
WHERE t.id = 1
AND @type <> 0
UNION
SELECT *
FROM Table t
WHERE t.id = 1
AND t.name = 'something')
Whether this works or not depends on how the actual query looks like