Ik denk dat de join die in de SELECT-component wordt uitgedrukt, zelfs wordt uitgevoerd voor de 100.000 rijen die je niet opneemt in de uiteindelijke dataset.
Wat dacht je hiervan:
SELECT s2.user_id,
(SELECT address_id FROM address a WHERE a.user_id = s2.user_id ORDER BY address_id OFFSET 0 LIMIT 1) AS a_id
FROM (select *
from subscribers s
ORDER BY s.user_id
OFFSET 100000 LIMIT 200) s2
Als dat niet lukt, probeer dan een algemene tabeluitdrukking:
With s2 as (
select *
from subscribers s
ORDER BY s.user_id
OFFSET 100000 LIMIT 200)
SELECT s2.user_id,
(SELECT address_id FROM address a WHERE a.user_id = s2.user_id ORDER BY address_id OFFSET 0 LIMIT 1) AS a_id
FROM s2