Autor Tópico: Ajuda com performance de SC_SELECT  (Lida 797 vezes)

Fbonline

  • Intermediário
  • ***
  • Mensagens: 171
  • Softmus IT Solutions
    • Softmus It Solutions
    • Email
Ajuda com performance de SC_SELECT
« Online: Novembro 17, 2014, 10:57:45 pm »
Olá pessoal,

Estou com um problema de performance aqui no result do select peço a ajuda de algumas dicas para melhorar esse result

Com até 9 mil registros ele retorna em 4 segundos mas se coloco para retornar todos que no total tem 30 mil ele demora uns 40 segundos.

Existe alguma maneira de melhorar esse código abaixo?

Desde já Agradeço!


$sql_clientes_auto = "SELECT top 7000 Id,Codigo,Nome FROM Clientes WHERE Regiao in ( [regiao_usuario] ) AND Ativo = 1";
      
      sc_select(resultado,$sql_clientes_auto);
      
      {
            
      $clientes = array();
      while (!$resultado->EOF){
      
      
         $clientes[] = array(
         'nome'=> utf8_encode($resultado->fields[2]),
         'codigo' => $resultado->fields[1]
            );
         
               
      $resultado->MoveNext();
      }
      $resultado->Close();
      
      echo json_encode($clientes);      
               
      }

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:Ajuda com performance de SC_SELECT
« Responder #1 Online: Novembro 18, 2014, 07:45:43 am »
Olá você tem índices na tabela? Crie mais alguns e indique no from ex:
 
SELECT top 7000 Id,Codigo,Nome FROM Clientes WITH(INDEX=nome_do_indice) WHERE Regiao in ( [regiao_usuario] ) AND Ativo = 1

Faça também mais um teste usando lookup e foreach

Willian Fernando

  • Expert
  • *****
  • Mensagens: 1148
  • .....
    • Email
Re:Ajuda com performance de SC_SELECT
« Responder #2 Online: Novembro 18, 2014, 07:48:09 am »
Bom para complementar

Código: [Selecionar]

 Regiao in ( [regiao_usuario] ) AND Ativo = 1";


Usar IN não e recomendado causa muito stress no BD ainda mais si estiver sem Index.
Veja si Ativo tem Index y si Regiao tem Index