Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Alternatywa do używania WHERE ... IN (...) do powolnych zapytań SQL

Tylko dla chichotów, czy możesz spróbować tego zapytania:

  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] 

Czasami poprawną odpowiedzią jest rzucenie większej ilości sprzętu na problem; chociaż zgadzam się, że powinna to być ostatnia deska ratunku, a nie pierwsza. To, czy ten konkretny problem wymaga więcej procesora, pamięci lub większej liczby wrzecion, zależy od wielu czynników, w tym od posiadanego sprzętu.

Twój zestaw wyników składający się z 1,6 miliona wierszy, każdy z 4 liczbami całkowitymi, powinien szybko posortować na dowolnej rozsądnej ilości bieżącego sprzętu. Ponieważ pojawiają się opóźnienia, wydaje się prawdopodobne, że w podstawowym zestawie 900 milionów wierszy występuje zbyt dużo przetwarzania, a wyzwaniem jest określenie, dlaczego. Czy możesz dołączyć więcej szczegółów na temat planu zapytań?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zwrócić wszystkie niezaufane ograniczenia kluczy obcych w programie SQL Server (przykład T-SQL)

  2. Jak utworzyć złożony klucz podstawowy w programie SQL Server (przykład T-SQL)

  3. Kompletny proces kopiowania tabeli z jednej bazy danych do drugiej (eksport-import) w SQL Server

  4. Użyj OBJECTPROPERTY(), aby określić, czy obiekt jest widokiem w SQL Server

  5. Czy można wykorzystać MS VS Database Project jako kompletne rozwiązanie do wersjonowania baz danych?