ユーザ用ツール

サイト用ツール


it技術:データベース:postgresql:oracleからの移行

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン両方とも次のリビジョン
it技術:データベース:postgresql:oracleからの移行 [2021/06/24 23:57] – [データ型] yajuadminit技術:データベース:postgresql:oracleからの移行 [2021/06/25 00:18] – [複合インデックスの指定方法] yajuadmin
行 198: 行 198:
 https://www.postgresql.jp/document/8.0/html/indexes-multicolumn.html https://www.postgresql.jp/document/8.0/html/indexes-multicolumn.html
  
-複合インデックスは最初の列から連続して列が指定されている場合にのみ機能するという制限があるからです。\\+複合インデックスは**最初の列から連続して列が指定されている場合にのみ機能する**という制限があるからです。\\
 そのため、インデックス定義の途中の列から条件を指定するとインデックスが効かず遅くなる。 そのため、インデックス定義の途中の列から条件を指定するとインデックスが効かず遅くなる。
 <code> <code>
行 205: 行 205:
 WHERE AA = xxx AND AB = xxx AND AC = xxx AND AD = xxx WHERE AA = xxx AND AB = xxx AND AC = xxx AND AD = xxx
 </code> </code>
 +
 +==== ダブルパイプ結合したインデックスは作成できない ====
 +PostgreSQLではカラムをダブルパイプ結合するとインデックスが効かなくなります。\\
 +Oracleではダブルパイプ結合したインデックス自体を作成できましたが、PostgreSQLではできません。\\
 +PostgreSQLでは単一または複合インデックスを作成し、行値式を使用することでインデックスを効くようにします。\\
 +
 +<code>
 +SELECT * FROM TEST
 +WHERE 
 +(UPDATE_DATE, UPDATE_TIME) >  ('20190218','141435') AND
 +(UPDATE_DATE, UPDATE_TIME) <= ('20190219','141435')
 +</code>
 +※Oracleの行値式は等価(=,!=,IN)しか対応していないが、PostgreSQLでは範囲条件(>, <=など)も対応している。なお、SQLServerは未だに行値式をサポートしていない。
 ==== ユーザ定義関数 ==== ==== ユーザ定義関数 ====
 === NVL関数 === === NVL関数 ===
it技術/データベース/postgresql/oracleからの移行.txt · 最終更新: 2023/12/18 13:16 by yajuadmin