Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Alternative à WHERE ... IN (...) pour les requêtes SQL lentes

Juste pour rire encore une fois, pourriez-vous essayer cette requête :

  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] 

Parfois, jeter plus de matériel sur le problème est la bonne réponse; même si je suis d'accord que cela devrait être un dernier recours et non un premier. Que ce problème particulier nécessite plus de CPU, plus de mémoire ou plus de broches dépend de nombreux facteurs, y compris votre matériel actuel.

Votre ensemble de résultats de 1,6 million de lignes, chacune composée de 4 entiers, devrait être trié rapidement sur une quantité raisonnable de matériel actuel. Étant donné que des retards se produisent, il semble probable que trop de traitement se produise sur l'ensemble de base de 900 millions de lignes, et le défi consiste à identifier pourquoi. Pouvez-vous joindre plus de détails sur le plan de requête ?