Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Alternativa para usar WHERE ... IN (...) para consultas SQL lentas


Apenas para rir novamente, você poderia tentar esta consulta:
  select 
    [sID], 
    ROW_NUMBER() over (partition by [sID] order by [wordPos]) [rn], 
    [wordPos], [FTSindex].[wordID]
  from [FTSindex] 
  join ( 
    values (428), (2112)
  ) w (wordID) on w.wordID = [FTSindex].wordID
  order by [sID], [rn] 

Às vezes, jogar mais hardware no problema é a resposta correta; embora eu concorde que este deve ser o último recurso e não o primeiro. Se esse problema específico requer mais CPU, mais memória ou mais eixos depende de muitos fatores, incluindo seu hardware atual.

Seu conjunto de resultados de 1,6 milhão de linhas, cada um com 4 inteiros, deve ser classificado rapidamente em qualquer quantidade razoável de hardware atual. Como estão ocorrendo atrasos, parece provável que esteja ocorrendo muito processamento no conjunto básico de 900 milhões de linhas, e o desafio é identificar o motivo. Você pode anexar mais detalhes sobre o plano de consulta?