Mam stosunek 1: 1 między dwiema tabelami. Chcę znaleźć wszystkie wiersze w tabeli A, które nie mają odpowiedniego wiersza w tabeli B. używam tej kwerendy:Jak znaleźć wiersze w jednej tabeli, które nie mają odpowiadającego wiersza w innej tabeli
SELECT id
FROM tableA
WHERE id NOT IN (SELECT id
FROM tableB)
ORDER BY id desc
id jest kluczem podstawowym w obu tabelach. Oprócz indeksów klucza podstawowego, mam również indeks na tableA (id desc).
Za pomocą H2 (wbudowanej bazy danych Java) powoduje to pełne skanowanie tabeli tableB. Chcę uniknąć pełnego skanowania tabeli.
Jak mogę przepisać to zapytanie, aby działało szybko? Jaki powinien być indeks?
za każdym razem piszesz 'WHERE col [NIE] IN (SELECT col FROM othertable)' jesteś lepiej refactoring używając [NIE] istnieje. – topchef