none
Ajuda com SELECT Complexo! RRS feed

  • Discussão Geral

  • 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? 

    terça-feira, 25 de setembro de 2012 13:33

Todas as Respostas

  • Jefferson,

    Inicialmente poderíamos pensar em utilizar esta query monstruosa como uma View.

    Existem diversos fatores e considerações que temos que analisar para tentar aplicar o melhor possível de desempenho:

    • Views;
    • Index;
    • Execution Plan;
    • Temp Table;
    • Data fragmentation; and
    • Statistics.

    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]

    terça-feira, 25 de setembro de 2012 14:23