l'heredoc è una pratica molto comune ed è usata, generalmente, in sostituzione agli apici doppi in quanto permette, come per gli apici doppi, di inserire variabili.

Visto che siamo in tema di heredoc e query ... dico la mia :P

Generalmente quando scrivo delle query, personalmente, utilizzo i normali apici doppi perché l'heredoc non permette l'uso di concatenazioni di stringhe e quindi di operatori ternari! Per fare la stessa cosa con l'heredoc dovrei usare degli if rendendo praticamente illeggibile la query.

Per intenderci, se devi costruire una query che varia in base a delle specifiche condizioni devi interrompere l'heredoc, fare un if, scrivere il codice della query, possibilmente/probabilmente dentro un altro heredoc ed infine fare ripartire l'heredoc della query creando non poca confusione.
Tutta questa trafila per ogni condizione che ti modifica strutturalmente la query.

Un esempio di una query con un operatore ternario nel mezzo può essere ad esempio:
codice:
$query = "
    SELECT
        t2.*
    
    FROM
        tabella1 AS t1
        INNER JOIN tabella2 AS t2 ON
        (
            t2.tabella2_tabella1_id = t1.tabella1_id" . ($t2SoloConfermati == true ? "
            AND
            t2.confermati = 'Si'" : '') . "
        )
    
    WHERE
        t1.eliminati = 'No'" . ($t1SoloConfermati == true ? "
        AND
        t1.confermati = 'Si'" : '');
Questa query, come puoi vedere tu stesso, è perfettamente leggibile e comprensibile anche se varia dinamicamente ... scritto cosi, non da minimamente fastidio alla leggibilità! Se si dovesse usare un heredoc la query dovrebbe essere tagliata più volte nel mezzo

Quindi il mio consiglio è di non usare l'heredoc per le query