Melhor maneira de comparar o final de uma string, use RIGHT, LIKE ou outr

Preciso comparar o final das strings com uma lista de possíveis finalizações em um procedimento armazenado. Será chamado muito e existem entre 10 e 15 finais de candidatos. Neste ponto, uma solução somente de código é preferível à criação de tabelas dedicadas a isso. Algo que seria como:

IF (ENDSWITH(@var, 'foo') OR
    ENDSWITH(@var, 'bar') OR
    ENDSWITH(@var, 'badger') OR
    ENDSWITH(@var, 'snake'))
(
)

Estou procurando o melhor caminho em termos de velocidade, mas também de manutenção. Os candidatos que eu conheço são

RIGHT, meu favorito até agora, mas isso significa que eu tenho que codificar o comprimento da string, para poder estar sujeito a erros. Também significa cortar a string de origem várias vezes.

IF ((LEN(@var) >= 3 AND RIGHT(@var, 3) = 'foo')) OR ...

LIKE, provavelmente mais lento, mas um pouco mais limpo

IF (@var LIKE '%foo') OR ...

CHARINDEX, provavelmente mais lento, pois pesquisa toda a cadeia de caracteres

SUBSTRING, provavelmente equivalente a RIGHT e muito mais feio

SQLCLR para criar meu próprio ENDSWITH, pode ser bem rápido

Pode haver maneiras melhores que eu não conheço. O que você acha

questionAnswers(3)

yourAnswerToTheQuestion