it技術:データベース:postgresql:oracleからの移行
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
it技術:データベース:postgresql:oracleからの移行 [2021/04/10 13:12] – [自律型トランザクション] yajuadmin | it技術:データベース:postgresql:oracleからの移行 [2021/06/25 00:18] – [複合インデックスの指定方法] yajuadmin | ||
---|---|---|---|
行 10: | 行 10: | ||
|DATE|TIMESTAMP| |DATEのままだと日付のみになる| | |DATE|TIMESTAMP| |DATEのままだと日付のみになる| | ||
|SYSDATE|current_timestamp | |SYSDATE|current_timestamp | ||
- | |ROWID|oid|32bit(約43億)で一周してしまう|Create文でWITH OIDSと設定しないと使用できない| | + | |ROWID|oid|32bit(約43億)で一周してしまう|Create文でWITH OIDSと設定しないと使用できない、PostgreSQL12以降はWITH OIDS廃止| |
参照:[[http:// | 参照:[[http:// | ||
行 198: | 行 198: | ||
https:// | https:// | ||
- | 複合インデックスは最初の列から連続して列が指定されている場合にのみ機能するという制限があるからです。\\ | + | 複合インデックスは**最初の列から連続して列が指定されている場合にのみ機能する**という制限があるからです。\\ |
そのため、インデックス定義の途中の列から条件を指定するとインデックスが効かず遅くなる。 | そのため、インデックス定義の途中の列から条件を指定するとインデックスが効かず遅くなる。 | ||
< | < | ||
行 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 | ||
</ | </ | ||
+ | |||
+ | ==== ダブルパイプ結合したインデックスは作成できない ==== | ||
+ | PostgreSQLではカラムをダブルパイプ結合するとインデックスが効かなくなります。\\ | ||
+ | Oracleではダブルパイプ結合したインデックス自体を作成できましたが、PostgreSQLではできません。\\ | ||
+ | PostgreSQLでは単一または複合インデックスを作成し、行値式を使用することでインデックスを効くようにします。\\ | ||
+ | |||
+ | < | ||
+ | SELECT * FROM TEST | ||
+ | WHERE | ||
+ | (UPDATE_DATE, | ||
+ | (UPDATE_DATE, | ||
+ | </ | ||
+ | ※Oracleの行値式は等価(=, | ||
==== ユーザ定義関数 ==== | ==== ユーザ定義関数 ==== | ||
=== NVL関数 === | === NVL関数 === |
it技術/データベース/postgresql/oracleからの移行.txt · 最終更新: 2023/12/18 13:16 by yajuadmin