Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Alternativa all'utilizzo di WHERE ... IN (...) per query SQL lente

Solo per ridere di nuovo, potresti provare questa query:

  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] 

A volte, lanciare più hardware al problema è la risposta corretta; anche se sono d'accordo sul fatto che questa dovrebbe essere l'ultima risorsa e non la prima. Il fatto che questo particolare problema richieda più CPU, più memoria o più mandrini dipende da molti fattori, incluso l'hardware attuale.

Il tuo set di risultati di 1,6 milioni di righe, ogni 4 numeri interi, dovrebbe essere ordinato rapidamente su qualsiasi quantità ragionevole di hardware corrente. Poiché si stanno verificando ritardi, sembra probabile che si stia verificando troppa elaborazione sul set di base di 900 milioni di righe e la sfida è identificare il motivo. Puoi allegare maggiori dettagli sul piano di query?