PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Lewe sprzężenie boczne i agregaty szyku

Jak już skomentował @Denis:nie ma potrzeby stosowania LATERAL .Ponadto Twoje podzapytanie wybrało niewłaściwą kolumnę. To działa:

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);

-Skrzypce SQL.

Wydajność i testowanie

Odnośnie późniejszego skanowania sekwencyjnego, o którym wspomniałeś:Jeśli wysyłasz zapytanie do całej tabeli, skanowanie sekwencyjne jest często szybsze . Zależy od używanej wersji, sprzętu, ustawień i statystyk liczności oraz dystrybucji danych. Eksperymentuj z selektywnym WHERE klauzule takie jak WHERE t1.t1_id < 1000 lub WHERE t1.t1_id = 1000 i połącz z ustawieniami planera aby dowiedzieć się o możliwościach wyboru:

SET enable_seqscan = off;
SET enable_indexscan = off;

Aby zresetować:

RESET enable_seqscan;
RESET enable_indexscan;

Tylko podczas sesji lokalnej, pamiętaj! Ta powiązana odpowiedź na dba.SE zawiera więcej instrukcji.
Oczywiście Twoje ustawienie też może być wyłączone:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BŁĄD:wartość null w kolumnie id narusza ograniczenie o wartości null

  2. Rails Migrations:próbowano zmienić typ kolumny z ciągu na liczbę całkowitą

  3. Aktualizacje oparte na niestandardowych wyzwalaczach dla PostgreSQL

  4. Akcje GitHub:Jak połączyć się z Postgresem w Akcji GitHub

  5. pgAdmin 4 wer. 1.5 - brak komunikatów o błędach