[MSSQL] Zamiana listy IN na joina - optymalizacja

0

Cześć, mam problemy z optymalizacją, bo operacje w bazie długo mi trwają.

Dzisiaj czytam cały dzień o metodach, ale jak na razie udało mi się skrócić o jakieś 15 - 20 sekund. W porównaniu z ok. dwiema minutami, to prawie nic ;)

Wobec tego chcę się chwycić każdej deski ratunku, ale nie zawsze wiem jak.

Przykładowo, mam jakieś zapytanie:

Select .... FROM tabela
WHERE deviceID in(SELECT ID from devices WHERE mode = 3)

Podobno można to zoptymalizować za pomocą joina. Ale nie mam pojęcia jak i czy na pewno.
Zapytanie z listy nie powinno zwrócić wielu rekordów.

0
  1. Powiedz jakie masz indexy na tych tabelach?
  2. Łącz zawsze mniejsze tabele do większych. Podejrzewam, że u Ciebie mniejsza będzie tabela devices.
  3. Dodawaj zawsze schema do której należy obiekt (zazwyczaj dbo.)

Powyższe zapytanie można spokojnie zamienić na:

select t.* 
from dbo.devices d
inner join dbo.tabela t on t.deviceID = d.ID
where d.mode = 3

1 użytkowników online, w tym zalogowanych: 0, gości: 1