sql >> Databáze >  >> RDS >> Sqlserver

Alternativa k použití WHERE ... IN (...) pro pomalé dotazy SQL

Jen pro zasmání, můžete zkusit tento dotaz:

  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] 

Někdy je správnou odpovědí hodit na problém více hardwaru; i když souhlasím s tím, že by to měla být poslední možnost a ne první možnost. Zda tento konkrétní problém vyžaduje více CPU, více paměti nebo více vřeten, závisí na mnoha faktorech, včetně vašeho současného hardwaru.

Vaše sada výsledků 1,6 milionu řádků, každé 4 celá čísla, by se měla rychle seřadit na jakémkoli rozumném množství aktuálního hardwaru. Vzhledem k tomu, že dochází ke zpožděním, zdá se pravděpodobné, že na základní sadě 900 milionů řádků dochází k příliš velkému zpracování, a problémem je zjistit proč. Můžete připojit další podrobnosti o plánu dotazů?




  1. Je Microsoft Access stále relevantní v roce 2020?

  2. Předání pole z aplikace .Net do uložené procedury Oracle

  3. Funkce NLS_COLLATION_NAME() v Oracle

  4. Pole datatimestamp automatické aktualizace serveru SQL Server