- ベストアンサー
データベースのインデックスについて
- データベースのインデックスについてOracleやPostgreSQLのデータベースを考えています。テーブルには50万件のデータがあり、1日に1万件の増減があります。照会の種類に応じて2つのインデックスを使用することを想定しています。
- 照会種類1では最新の情報を取得するためにインデックス1を使用し、照会種類2では朝9時のデータを取得するためにインデックス2を使用します。
- 特定のインデックスのみを更新する方法も可能ですが、具体的なデータベース用語はわかりません。データベースの知識が少ないため、運用の可否について教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
インデックスの再作成と受け取りましたが、だとしたらなぜデータ登録のたびにインデックスを作成するのでしょうか? インデックスがなにか理解していないような感じがします。 インデックスというのはなくても構わないのですが、あればあったでSELECTで特定条件でデータを抽出するときに結果を得るまでの時間が違います。データ件数が多いほどその時間は無視できないものになります。 で、インデックスというのはテーブルに対してデータ更新が発生するたびに自動で更新されます。ですから「インデックスを特定のタイミングで意図的に作成する」という手順は考えなくていいんです。 検索するときの検索条件となる項目を使用してインデックスを作成するのです。 SQLで言えば「CREATE INDEX」もしくはテーブル作成のときに指定する「PRIMARY KEY」。 CREATE TABLE テーブル1 ( 日時 DATETIME NOT NULL, 商品名 CHAR(MAX), 在庫状況 NUMERIC, 増減 INTEGER, PRIMARY KEY 日時,商品名) CREATE INDEX IDX1 (日時); CREATE INDEX IDX2 (商品名); って感じになるのかな? 色々と混ざっているので構文的にはエラーになるのでご自分の環境に合わせて解釈してください。 ですが、なんとなく発想が表計算っぽくてデータベースとしては効率が悪すぎるというかトレーサビリティ的には用をなさない気がします。 「インデックス作成」という作業が、具体的に何をしたいのかがよくわかりません。インデックスという単語がお互いが違う意味と考えていれば話は通じないですよね。だから「何をどうしたい」のかを省略せずに説明してもらわないと意図が通じないことにもなります。お互いに・・・
その他の回答 (1)
- t_ohta
- ベストアンサー率38% (5238/13705)
データベースのインデックスは、どのカラムを使って検索するのかを考慮して、インデックスの構成を決めます。 インデックスは一度作成すると、データのINSERTやUPDATEを行う度に自動で更新されるので、わざわざ再作成する必要はありません。