Usuário com melhor resposta
Query com condiccao opcional

Pergunta
-
Boa tarde senhores.
Criei varias procedures de listagem do conteúdo das tabelas de forma padronizada.
Todas as procedures tem as colunas das tabelas como parâmetros. Se o parâmetro é passado, a procedures inclui aquela coluna na clausula where, se não for passada o parâmetro fica com default null e esta coluna não entra no filtro.
O problema é que fiz isto por query dinâmica. Agora um superior determinou que não poderemos usar query dinâmica.
Não estou conseguindo montar uma query com o where opcional como descrito acima pois:
select * from tabela where coluna = @coluna or @coluna is null --> isto da index scan... Não me serve.
Consegui uma opção usando union e except mas ficou enorme.
Alguem tem alguma sugestão sobre isto? Já passaram por este problema?
Obrigado.
Respostas
Todas as Respostas
-
-
-
Cleiton,
Mas qual é o problema de ocorrer um IndexScan? O pior seria se você estivesse se deparando com um Table Scan.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
-