sql >> Base de Datos >  >> RDS >> Sqlserver

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

Solo para reírte de nuevo, ¿podrías intentar 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] 

A veces, lanzar más hardware al problema es la respuesta correcta; aunque estoy de acuerdo en que este debería ser el último recurso y no el primero. Si este problema en particular requiere más CPU, más memoria o más ejes depende de muchos factores, incluido su hardware actual.

Su conjunto de resultados de 1,6 millones de filas, cada 4 enteros, debería clasificarse rápidamente en cualquier cantidad razonable de hardware actual. Dado que se están produciendo retrasos, parece probable que se esté procesando demasiado en el conjunto base de 900 millones de filas, y el desafío es identificar por qué. ¿Puedes adjuntar más detalles sobre el plan de consultas?