PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как мога да напиша тази заявка за postgres в Amazon redshift, така че да е толкова оптимизирана, колкото беше в postgres?

Оптимизацията на Redshift Query идва от Cluster, Table Design, DataLoading, Data Vacuuuuming &Analyzing over the table.

Позволете ми да отговоря на някои основни допирни точки в горния списък.1. Уверете се, че вашата таблица mytable, детайл, клиент има правилно SORT_KEY, DIST_KEY2. Уверете се, че всичките ви маси в съединението са анализирани и вакуумирани правилно.

Ето друга версия на същия SQL, написана във формат Redshift.

Няколко ощипвания, които направих, са

  1. Използва се „С клауза“ за оптимизирано изчисление на ниво клъстер
  2. Използвано Съединява се по правилния начин и се уверете, че съединяването ляво/дясно има значение въз основа на данни.
  3. Използван диапазон от дати с таблица с клаузи за вид ориентация на обекта.
  4. Използва се Group By в основния SQL по-долу.

Моята версия на 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (Postgresql) направете функция за задействане на таблица, вмъкнете ID стойност на променен ред в журналната таблица, за персонализирана репликация

  2. Съхраняване на дълги двоични (сурови) низове

  3. Данни за пари в PostgreSQL с помощта на Java

  4. Как statement_timestamp() работи в PostgreSQL

  5. Премахване на ключалки без pid в postgres