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

Alternativ til at bruge WHERE ... IN (...) til langsomme SQL-forespørgsler

Bare for at grine igen, kan du prøve denne forespørgsel:

  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] 

Nogle gange er det korrekte svar at kaste mere hardware på problemet; selvom jeg er enig i, at dette bør være en sidste udvej og ikke en første. Om dette særlige problem kræver mere CPU, mere hukommelse eller flere spindler afhænger af mange faktorer, inklusive din nuværende hardware.

Dit resultatsæt på 1,6 millioner rækker, hver 4 heltal, burde sortere hurtigt på enhver rimelig mængde nuværende hardware. Da der opstår forsinkelser, forekommer det sandsynligt, at der sker for meget behandling på basissættet på 900 millioner rækker, og udfordringen er at identificere hvorfor. Kan du vedhæfte flere detaljer om forespørgselsplanen?




  1. Strengsammenkædning i MySQL

  2. Avanceret SQL:Indsæt output fra den parametriserede tabelværdi-funktion i SQL-tabel

  3. SELECT DISTINCT Fungerer ikke Android SQLite

  4. tomcat 6.0.24 Undtagelse:Kunne ikke indlæse com.mysql.jdbc.SQLError