ユーザーが一人でトランザクションの処理も必要ないので、いっそRDBMSを使わないでカンマ区切りなどでファイルに出力した方がいいのかも知れないと思っています。
主キー列にソートする必要のある列を含んで、クラスタ化インデックスを作成します。
クラスタ化インデックスがあると、常にその列で整列して保存されます。つまりソートされた状態でハードディスク上に記録されますので、参照の都度ソートしない分処理が早いです。
その代わり、データ入力時にソートするので多少処理がかかりますが、ユーザがお一人ということなのでこちらのほうが良いでしょう。
データを格納(INSERT)する際に、ソートした順番で格納してしまうことができます。これは、テーブル作成時にそのような構成にしてしまうことで実現できます。ORACLEの場合は「索引構成表」というテーブルを作成します。これは主キーの値順(昇順/降順は任意)でデータを格納します。
もう一方の方法は、スナップショットをテーブルとは別に作成することです。作業を行わない夜間などに、テーブルをもとにスナップショットを作成し、そのスナップショット内でソートをしておきます。ユーザはテーブルではなくそのスナップショットを参照すれば、毎回ソートする必要はありません。
なお、ソートしたビューを用意する場合は、そのビューにアクセスした場合でも毎回ソートが走ってしまいます。
> 毎回ソートしていたのでは時間がかかりますよね?
インデックスという機能を使うことで、ソートにかかる時間は無視出来るくらい小さくなります(ゼロにはならないけど)。
CSVファイルにした場合、1000件目から10件だけ表示したい、なんてときに重いですよ。RDBMSであれば一瞬です。
http://www.postgresql.jp/document/pg721doc/reference/sql-createi...
コメント(0件)