Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Алтернатива на използването на WHERE ... IN (...) за бавни SQL заявки

Отново за смях, можете ли да опитате тази заявка:

  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] 

Понякога хвърлянето на повече хардуер върху проблема е правилният отговор; въпреки че съм съгласен, че това трябва да е последна мярка, а не първа. Дали този конкретен проблем изисква повече CPU, повече памет или повече шпиндели зависи от много фактори, включително вашия настоящ хардуер.

Вашият набор от резултати от 1,6 милиона реда, всеки 4 цели числа, трябва да сортира бързо на всяко разумно количество текущ хардуер. Тъй като има закъснения, изглежда вероятно да се извършва твърде много обработка на основния набор от 900 милиона реда и предизвикателството е да се установи защо. Можете ли да прикачите повече подробности за плана на заявката?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORDER BY ... COLLATE в SQL Server

  2. Как да настроите поща на база данни в SQL Server (SSMS)

  3. SQL Delete изчиства таблицата вместо грешка

  4. Какво е името на ограничението по подразбиране в SQL Server?

  5. Грешка 28000:Неуспешно влизане за потребител DOMAIN\\user с pyodbc