クラスタ索引を使ってみた

クラスタ索引とは、簡単に言うと頻繁に結合するテーブル同士の結合条件Columnを一カ所に集中させて ディスクのランダムアクセスを減らそう(シーケンシャルアクセスにする)っていうものかな 詳細は下記へ http://otndnld.oracle.co.jp/document/products/or…

外部表を触ってみた(ORGANIZATION EXTERNAL)

http://www.oracle.co.jp/iSeminars/071120_1600/doc/DataLoading_071120.pdf この辺に触発されて ・外部表 ・テーブル圧縮(COMPRESS) の2つを試して見たくなった。 COMPRESSについてはEEでのみ使える機能とのことなので会社の開発環境にて試そうと思うが …

Oracleの制約について

Oracleには下記の4制約(CONSTRAINT)があります。 NOT NULL制約 一意制約 主キー制約 外部制約 チェック制約まずNOT NULL制約は 「表の列値がNULLでないということが求められます。」 とのことなのでCreateUpdateで制約がかかりますが、INDEX(OBJECT)が生…

Order By でさっき知ったこと

NULLS FIRST | NULLS LAST NULL値を含む戻された行が順序の最初にくるか、最後にくるかを指定します。NULLS LASTは昇順のデフォルトで、NULLS FIRSTは降順のデフォルトです。SQLリファレンスよりつまり SELECT * FROM M_USER ORDER BY NAME NULLS FIRST とか…

Oracleでのページングについて

ページングについて適当に考えてみたたとえば M_USERテーブルがあって列には ID ,NAME ,REG_DATE の3カラムあったとして、NAMEで降順、IDで昇順ソートして11〜20件を取得する場合一般的には SELECT NUM_USER.ID ,NUM_USER.NAME ,NUM_USER.REG_DATE ,NUM_…

DBMS_STATS.GATHER_TABLE_STATSのestimate_parcent

統計情報を手動で取りたくてDBMS_STATSパッケージをいじっていたのですが estimate_parcent(サンプリングするパーセンテージ)が デフォルトでNULLになっていたので、NULLだと何パーセントになるのかなー ってマニュアル漁ってたら 「NULLは計算を意味しま…

CASE文のSQLでの使い方

ORACLEのCASE文はかなり便利でいろいろな要件で結構使ったりしますが、 本当に色々できます。たとえば ・SELECT ・FROM ・WHERE ・GROUP BY ・HAVING ・ORDER BY などがあります。 こんなテーブルがあったとして TEST_USER ID NUMBER NAME VARCHAR2 AGE NUMB…

OracleでAutoIncrement

MySQLのようにautoincrementをOracleで使いたいことが多々ありますが Oracleにはautoincrementに相当する機能はありません。Oracleで同等のことをしたいときはDMLTriggerを駆使します。 たとえばこんなテーブルと CREATE TABLE TEST_USER ( ID NUMBER NOT NU…