sql >> Database >  >> RDS >> PostgreSQL

Hoe kan ik deze postgres-query in Amazon redshift schrijven zodat deze net zo geoptimaliseerd is als in postgres?

Redshift Query-optimalisatie komt van Cluster, Table Design, DataLoading, Data Vacuuming &Analyse over de tafel.

Laat me enkele kernpunten in de bovenstaande lijst beantwoorden.1. Zorg ervoor dat uw tabel mytable, detail, client de juiste SORT_KEY, DIST_KEY2 heeft. Zorg ervoor dat al je tafels in de join goed worden geanalyseerd en gevacumeerd.

Hier is een andere versie van dezelfde SQL, geschreven in Redshift-formaat.

Enkele tweaks die ik heb gemaakt zijn

  1. Gebruikt "Met clausule" voor geoptimaliseerde berekening op clusterniveau
  2. Gebruikte joins op de juiste manier en zorg ervoor dat links/rechts joins belangrijk zijn op basis van gegevens.
  3. Datumbereik gebruikt met clausuletabel voor soort objectoriëntatie.
  4. Gebruikt Group By in de hoofd-SQL hieronder.

Mijn versie van Redshift SQL

/** Date Range Computation **/
with date_range as (
    select ( current_Date - interval '2 weeks' ) as two_weeks
),
/** Filter main ResultSet**/
myGroupSet as (
    SELECT b.val AS myGroup,
           c.username,
           a.someCode,
           a.timeTaken,
           (case when (b.name == 'name1') THEN b.val::INTEGER ELSE 0 END ) as name11,
           (case when (b.name == 'name2') THEN b.val::INTEGER ELSE 0 END ) as name12
      FROM database.myTable a,
      join date_range dr on a.date > dr.two_weeks
      join database.detail b on b.id = a.id
      join database.client c on c.c_id = a.c_id
     where a.date > current_Date - interval '2 weeks'
)
/** Apply Aggregation **/
select myGroup, username, someCode, timeTaken, date,
       sum(name1), sum(name2)
  from myGroupSet
  group by myGroup, username, someCode, timeTaken, date



  1. Kan een onderliggende rij niet toevoegen of bijwerken:een beperking van een externe sleutel mislukt

  2. Optimale manier om array in tabel op te slaan/op te halen

  3. Wat is de root-fout achter Kan geen databaseverbinding tot stand brengen. Controleer verbindingsreeks, gebruikersnaam en wachtwoord.

  4. Stap voor stap R12.2.6 EBS-installatie op Virtual Box