Por que as performances dessas duas consultas são tão diferentes?

Tenho um processo armazenado que procura produtos (250.000 linhas) usando um índice de texto complet

O processo armazenado usa um parâmetro que é a condição de pesquisa de texto completo. Como esse parâmetro pode ser nulo, adicionei uma verificação nula e a consulta repentinamente começou a executar ordens de magnitude mais lenta

-- This is normally a parameter of my stored proc
DECLARE @Filter VARCHAR(100)
SET @Filter = 'FORMSOF(INFLECTIONAL, robe)'

-- #1 - Runs < 1 sec
SELECT TOP 100 ID FROM dbo.Products
WHERE CONTAINS(Name, @Filter)

-- #2 - Runs in 18 secs
SELECT TOP 100 ID FROM dbo.Products
WHERE @Filter IS NULL OR CONTAINS(Name, @Filter)

qui estão os planos de execuçã

Query # 1

Query # 2

Devo admitir que não estou muito familiarizado com os planos de execução. A única diferença óbvia para mim é que as junções são diferentes. Gostaria de tentar adicionar uma dica, mas não tendo junção na minha consulta, não sei como fazer iss

Também não entendo muito bem por que o índice chamado IX_SectionID é usado, pois é um índice que contém apenas a coluna SectionID e essa coluna não é usada em nenhum luga

questionAnswers(6)

yourAnswerToTheQuestion