sql >> Database >  >> RDS >> PostgreSQL

Links samenvoegen Laterale en array-aggregaten

Zoals @Denis al opmerkte:geen behoefte aan LATERAL .Ook heeft uw subquery de verkeerde kolom geselecteerd. Dit werkt:

SELECT t1.t1_id, t1.t1_data, t2_ids
FROM   t1
LEFT   JOIN (
    SELECT t1_id, array_agg(t2_id) AS t2_ids
    FROM   t1_t2_rel
    GROUP  BY 1
    ) sub USING (t1_id);

-SQL-viool.

Prestaties en testen

Betreffende de daaropvolgende sequentiële scan vermeldt u:Als u de hele tabel bevraagt, is een sequentiële scan vaak sneller . Hangt af van de versie die u gebruikt, uw hardware, uw instellingen en statistieken van kardinaliteiten en distributie van uw gegevens. Experimenteer met selectieve WHERE clausules zoals WHERE t1.t1_id < 1000 of WHERE t1.t1_id = 1000 en combineer met planner-instellingen voor meer informatie over keuzes:

SET enable_seqscan = off;
SET enable_indexscan = off;

Om te resetten:

RESET enable_seqscan;
RESET enable_indexscan;

Alleen in uw lokale sessie, let wel! Dit gerelateerde antwoord op dba.SE heeft meer instructies.
Natuurlijk kan uw instelling ook uitgeschakeld zijn:




  1. Kill MySQL-query bij afbreken gebruiker

  2. Kan geen verbinding maken met de Postgres-database vanuit de golang Docker-container

  3. PHP Fatale fout:oproep naar niet-gedefinieerde functie mssql_connect()

  4. MySQL grote tabel importeren