Gostaria da melhor forma de fazer um select condicional cheio de where'S' e case 'S'.
tenho uma tabela com mais de 1.500.000 de registros.
desenvolvi um algoritmo que tem umas 15 condições de where 's' e pelomenos umas
30 condições de case 's' no order by.
é mais ou menos assim.
select nome from tabela
where ref1 like '%%' and
ref2 like '%%' and
ref6 like '%%' and
ref5 like '%%' and
ref3 like '%%' and ...
order by
case campo vazio é igual a 0 +
case campo limpo é igual a 2 +
case campo tiver nome é igual a 4
case campo tiver valor é igual a 2 ....
assim eu obtive os melhores resultados de acordo com essas condições assim eu conseguira ter os filtros educadamente pelo where e ordenados de acordo com a maior somatoria de cases o que me traria o melhor resultado em primeiro e assim por diante.
porem esta é uma consulta monstruosa que preciso adapta-la para fazer então gostaria de saber qual a melhor forma de eu otimizar essa consulta para que o resultado não demore para exibir, é um projeto web e precisaria dessa consulta instantanea.
não sei se procedure,views ou algum outro tipo que eu desconheça, alguem tem alguma
ideia de como eu posso executar essa query com um bom desempenho?