SELECT id FROM A LEFT OUTER JOIN B ON A.id=B.id WHERE B.id IS NULL
je kan dit doen. de outer join zou een beetje prestatie moeten opleveren, maar niet veel.
nieuwe databasesystemen zullen uw zoekopdracht waarschijnlijk toch optimaliseren, zodat er geen verschil zal zijn.
de juiste manier hier is caching! probeer indien mogelijk de query-cacher en caching op applicatieniveau.
natuurlijk heb je goede indexen nodig.
en met de juiste bedoel ik op beide tabellen en bij voorkeur een hash-index, omdat deze statische opzoektijd heeft in vergelijking met elke boom met logaritmische
Probeer een uitleg voor de vraag te plaatsen om te zien wat dit echt vertraagt.
als je dit echt nodig hebt om snel te zijn, kun je je gegevensstructuur opnieuw factureren.
je zou eventueel een trigger kunnen maken om een vlag in tabel A te markeren of er een corresponderend item in tabel be is. natuurlijk deze id-gegevensredundantie, maar soms is het de moeite waard. beschouw het maar als caching.
een laatste gedachte:je zou kunnen proberen SELECT id FROM A WHERE id NOT IN (SELECT id FROM B)
het kan een beetje sneller zijn omdat er geen daadwerkelijke samenvoeging nodig is, maar het kan ook langzamer zijn omdat het opzoeken in de set van be een volledige scan zal zijn. Ik weet niet precies hoe dit zal worden verwerkt, maar het kan het proberen waard zijn.