sql >> データベース >  >> RDS >> PostgreSQL

このpostgresクエリをAmazonredshiftで記述して、postgresの場合と同じように最適化するにはどうすればよいですか?

    Redshiftクエリの最適化は、クラスター、テーブルデザイン、DataLoading、データバキューム、およびテーブルの分析から行われます。

    上記のリストのいくつかのコアタッチポイントに答えさせてください。テーブルがmytable、detail、クライアントに適切なSORT_KEY、DIST_KEY2があることを確認してください。結合しているすべてのテーブルが適切に分析され、空になっていることを確認してください。

    これは、Redshift形式で記述された同じSQLの別のバージョンです。

    私が行った微調整はほとんどありません

    1. 「WithClause」を使用してクラスターレベルの計算を最適化
    2. 使用済み結合は適切な方法で行われ、データに基づいて左右の結合が重要であることを確認してください。
    3. オブジェクト指向の種類に句テーブルとともにdate_rangeを使用しました。
    4. 以下のメインSQLで使用されるGroupBy。

    私のバージョンのRedshiftSQL

    /** 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. MySQLデータベースでのトリガーの操作-チュートリアル

    2. pg_restoreコマンドの実行中にdbをドロップして作成できますか?

    3. PHPで画像を並べ替えるために、テキストファイルやファイル名の代わりにMySQLを使用する方が速いですか、それとも良いですか?

    4. MySQL utf8_general_ciフィールドにある二重エンコードされたUTF-8文字列を修正するにはどうすればよいですか?