sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan kan jeg skrive denne postgres-forespørgsel i Amazon redshift, så den er lige så optimeret, som den var i postgres?

Redshift Query optimering kommer fra Cluster, Table Design, DataLoading, Data Vacuuming &Analysing over tabellen.

Lad mig svare på nogle centrale berøringspunkter i ovenstående liste.1. Sørg for, at din tabel mytable, detalje, klient har korrekt SORT_KEY, DIST_KEY2. Sørg for, at alle dine borde i join er analyseret og støvsuget ordentligt.

Her er en anden version af din samme SQL skrevet i Redshift-format.

Nogle få Tweaks, jeg lavede, er

  1. Brugt "With Clause" til optimeret klyngeniveauberegning
  2. Brugt tilslutter sig på den rigtige måde, og sørg for, at venstre/højre slutter sig til sager baseret på data.
  3. Brugte date_range med sætningstabel til slags objektorientering.
  4. Brugt Group By i den primære SQL nedenfor.

Min version af 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 ikke oprette forbindelse til MySQL (python MySql-Connector), når den er i docker-container

  2. Gruppere efter første bogstav, alfabetisk, bedste måde?

  3. Behov for at konvertere Oracle Merge til forespørgsel til PostgreSQL

  4. cc1:fejl:ikke genkendt kommandolinjeindstilling -Wno-null-konvertering inden for installation af python-mysql på mac 10.7.5