sql >> Database >  >> RDS >> Sqlserver

Alternatief voor het gebruik van WHERE ... IN (...) voor langzame SQL-query's

Gewoon om weer te giechelen, zou je deze vraag kunnen proberen:

  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] 

Soms is het juiste antwoord om meer hardware op het probleem te gooien; hoewel ik het ermee eens ben dat dit een laatste redmiddel moet zijn en niet een eerste. Of dit specifieke probleem meer CPU, meer geheugen of meer spindels vereist, is afhankelijk van veel factoren, waaronder uw huidige hardware.

Uw resultatenset van 1,6 miljoen rijen, elk 4 gehele getallen, zou snel moeten sorteren op een redelijke hoeveelheid huidige hardware. Aangezien er vertragingen optreden, lijkt het waarschijnlijk dat er te veel verwerking plaatsvindt op de basisset van 900 miljoen rijen, en de uitdaging is om te achterhalen waarom. Kunt u meer details over het zoekplan bijvoegen?




  1. De MySQL db opvragen

  2. Uniek tekstveld in MySQL en php

  3. MySQL PHP postcode vergelijking specifiek afstand

  4. Wat is het verschil tussen utf8_general_ci en utf8_unicode_ci?