Jó ez az EXPLAIN, feltéve, hogy értelmezni tudja a kedves felhasználó, én pl. nem nagyon igazodom el rajta.
Azért próba-cseresznye alapon módosítgattam a lekérdezést, valószínűleg szerencsém volt, mert az első csere: "array_length(ack_user_ids, 1) IS NULL" helyett "COALESCE(array_length(ack_user_ids, 1) = 0, true)" feltételt beírva megszűnt a 4 másodperc feletti tökölés (a kiindulási alarms tábla még mindig üres).
Eredetileg itt a "array_length(ack_user_ids, 1) > 0" feltétel szerepelt, csak éppen nem működött, mer a föggvény nem nullát, hanem NULL-t adott vissza.
Azt még elfogadom (bár nem erre számítottam jelen esetben), hogy az array_lenght NULL-t ad vissza üres tömbnél. De azt már végkép nem értem, hogy az eredeti query miért tökölt ennyi ideig, miközben a kiindulási tábla teljesen üres.