アットウィキロゴ

4.リレーショナルデータベース@その2

ここでは、リレーショナルデータベースでテーブル以外の重要な要素を紹介しますw

SQL

データベースのテーブルなどの定義やデータの登録や削除、取得などを行うデータベース問い合わせ言語ですw
ある程度は国際標準で決まっていますが、実際はデータベースに応じて、少々異なりますw
アプリケーションはこのSQLを発行して、データの読み書きを行うため、ある程度、SQLを覚える必要がありますw
難しい事をする場合以外は、簡単なので、すぐに覚えられますw
詳しくは後ほどw

インデックス

前章で説明したように複数のテーブルの関連性を利用して、情報を探して、取得する場合、テーブルのデータの中から特定のデータを検索しなければ、なりませんw
特定の情報を探すためにあらかじめ、裏側で特定のデータを探しやすくするため定義がインデックスですw
主キーや外部キーなどとして、定義したキーにはあらかじめ、勝手にインデックスは定義されていますwそれ以外の項目で検索のキーとなる場合は、インデックスを定義する事をオススメしますw

検索する列にインデックスを定義する事で、1分かかる検索が1秒で行えるようになるくらい重要なものですw
なら、最初から全ての列にインデックスを定義すれば良いのにそうしていないのは、インデックスにはデメリットがあるからですw
インデックスを定義した列のデータを作成・更新・削除すると同時にインデックス情報も作成・更新・削除する必要があるので、検索が早くなる代わりに作成・更新・削除が遅くなりますw

ですので、例えば、ユーザから画面でひたすらデータを登録するのみで、検索は裏側でシステムが勝手に読み込みだけするようなシステムの場合、裏側の検索を高速化するためにインデックスを張ると、ユーザの画面での登録処理が遅くなりますw画面での遅さはユーザにとって、優しくありませんw
ですので、このような場合は、インデックスは張りませんw
逆にデータの登録は裏側で自動的にどっかから取得して、登録し、ユーザは画面からデータを取得し、表示する場合は、データの検索を優先するため、インデックスを張るべきですw
という風に何を優先するかによって、インデックスをどこに張るかを判断する設計する必要がありますw

僕の経験によると、インデックスを張ると、10倍くらい検索が早くなり、登録などは1.3倍くらいに遅くなりますwなので、判断に迷ったら、基本的に検索となる全ての列にインデックスを張るようにしていいですw

シーケンス

前章の注文テーブルのように連番で1、2、3・・・と順番に番号を振っていく場合、現在、何番まで番号を振って、次に何番を振るかを管理するオブジェクトがシーケンスですw
シーケンスはデータベースに応じて、あったり、なかったり、形が様々だったりしますw

(最終更新日:2010年7月6日)












=w=)
最終更新:2010年07月06日 23:35