- 締切済み
2つのインデックスと複合インデックスの違い
Accessで 顧客IDと顧客名を含むテーブルがあったとします。 そこで 1.顧客IDのインデックスと顧客名のインデックスの2つのインデックス 2.顧客ID、顧客名の順番で定義した複合インデックス 2つの違いが分かりません。 インデックスといえば、 固有インデックス(主キー)とプロパティで設定するインデックスの知識しかないのですが、 たぶん、1.のほうは、 両方のフィールドとも、検索時のパフォーマンスが向上して、 2.のほうは 顧客IDだけ? と、想像するのですが・・ 2つのインデックスと複合インデックスの設定の仕方も分からないので、どこを使って設定するのか教えてください。
- omusupa
- お礼率86% (350/406)
- オフィス系ソフト
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mshr1962
- ベストアンサー率39% (7418/18948)
顧客IDは普通なら主キーになります。 ただ、家族で一つのキーなんて設定の場合は、他のキーと複合で主キーにする必要があります。 顧客名の場合は、同姓同名の人物や同名の会社名があるので、主キーにはなりません。 >どこを使って設定するのか教えてください。 複合で主キーにする場合は、テーブルのデザインモードで 主キーにする順番に、Ctrlキーを押しながら選択して、ツールバーの鍵のボタンを押す インデックスを手動で設定(単独・複合・昇順・降順)する場合は、 鍵のボタンの右隣の罫線に雷のボタンで表示されるダイアログで設定
関連するQ&A
- 主キーとインデックスの違いについて
はじめまして。 SqlServerのテーブル作成をしていますが、 主キーとインデックスの違いがよく分かりません。 いつも主キーの設定は行っていますが、インデックスの設定も必要なのでしょうか。(パフォーマンスの向上の為?) 基本的な事ですみませんが ご教授お願いします。
- 締切済み
- SQL Server
- ■検索時にINDEX(インデックス)がどう役立つのか?
いつもお世話になっております。 MySQLのカテゴリにて質問をさせて頂きますが、このことに意味はありません。 SQLにおける、INDEXの考え方を知ることができれば良いなと思っております。 SQLについては初心者ですので、分かりやすく教えて頂けると助かります。 では、本題へ。 ------------- あるデータテーブルの検索速度を上げる方法として、 INDEXを設定することもその1つに挙げられるかと思いますが、 あるテーブルにおける、ある列(フィールド)に対しINDEXを設定した場合、 検索時、それはどう利用されるのでしょうか、というのが質問です。 例えば、 会員データベース ・会員番号:id ・年齢:age ※その他、複数のフィールドを持つ、とする。 上記の会員データベースにおいて、 CREATE INDEX idx ON tbl_member(id); という風に、tbl_memberテーブルに対し、 会員番号(id)をINDEXに設定したとします、 idは唯一無二の(ユニークな)データです。 この会員テーブルにおいて、 年齢(age)フィールドをもとに、40歳以上の会員を抽出(検索)したい場合、 INDEX(idが設定されている)はこの検索において、 どういう仕組みで活かされることになるのでしょうか? ageと無関係のidが、どう役に立つのか分からずにいる、ということです。 ネット上で色々調べたのですが、 あるフィールドをINDEXに設定した場合に、 それが検索時にどう活かされるのかについて説明されているページを 私は見つけることができませんでしたので、質問させて頂きました。 どうぞ、宜しくお願い致します。
- ベストアンサー
- MySQL
- Access2000のリレーションシップのエラーについて
どのくらい説明すればいいのかわからないのですが、アクセス2000でリレーションシップの設定をするときに、 「主テーブルで参照されているフィールド用の固有インデックスがありません。」 というエラーメッセージが出てきてリレーションを作る事が出来ません。 問題なのは3つのテーブルのリレーションなのですが、それぞれのインデックスをチェックすればいいのだとは思いますが、対象となったフィールドは主キーではないので、重複は許可していますが、一応どちらもインデックスは作成しています。 どのようなリレーションシップかというと、業者テーブルと商品テーブルと販売履歴テーブルのリレーションで、 商品テーブルの業者IDと業者テーブルのIDのリレーション→左内部結合(商品テーブルの全フィールドに入れる) 業者テーブルの業者IDと販売履歴の業者IDのリレーション→右内部結合 は出来るのですが、商品テーブルの商品名と値段フィールドと、販売履歴の対応する部分についてのリレーションについてもたせようとするとエラーが出てしまいます。このようなリレーションはいらないのでしょうか? どちらも固有の値でない量のリレーションだからなのでしょうか? この二つのフィールドの参照整合性をどう保てばいいのか教えて下さい。
- 締切済み
- オフィス系ソフト
- 複合キーの設定エラー
お世話になります。 SQLserver2005 であるテーブルに複合主キーを設定しようとしているのですが以下エラーが出て設定できません。どこの設定を変更すればいいのかご教示いただけれたらと思います。 マネジメントスタジオで対象テーブルのカラム二つを選択し、主キー設定ボタンを押す。 ↓ メッセージ『インデックスまたは主キーのサイズは900バイトまでです』 ★列プロパティのサイズはそれぞれ510となっておりましたがここが原因でししょうか?(二つを足すと900以上だから??しかし変更の仕方も分かりません。1つのカラムだけですと設定できるのですが。。。) ちなみにこのテーブルにインデックスはまだ設定しておりません。 何卒宜しくお願い致します。
- ベストアンサー
- SQL Server
- ユニークインデックスについて
仕事の関係で、テーブル定義の際にユニークインデックスをどの列の組み合わせにするのか考える必要があるのですが、今までユニークインデックスの存在自体知らず、困っています。 自分自身でネット等で調べた結果以下のことは理解できました。 1.ユニークインデックスで指定された列は値が一意でなければならない。 2.主キーの列にはNULL値は不可だが、ユニークインデックスの列はNULL値も可。 3.主キーは一つのテーブルにつき、一つしか設定できないが、 ユニークインデックスは複数設定できる。(同じ列は指定できない) 4.主キー設定時、実は暗黙的にユニークインデックスとNOT NULL制約が作成されている。 ここまでは分かったのですが、主キーとは別で、明示的にユニークインデックスを指定する必要性とはなんなのでしょうか? 主キーとは別で明示的に指定した方が良い場合と、その実例をどなたか教えて頂けないでしょうか? よろしくお願いします。
- ベストアンサー
- Oracle
- Accessのクエリ作成について
クエリを作成する際の、テーブルの設定の仕方がよくわかりません。 たとえば、「顧客リスト」テーブルと「販売履歴」テーブルに、それぞれ「顧客ID」フィールドがあり、「顧客ID」フィールドがリレーションシップで設定されているとします。 新たに、選択クエリを作成し、そのクエリに、「顧客ID」フィールドを設定するときに、どちらのテーブルの「顧客ID」フィールドを設定するかがわかりません。 ちなみに顧客IDフィールドには、リレーションシップを設定していて、1対多の設定をしています。 「顧客リスト」テーブルの「顧客ID」フィールドが、「1」の側で、 「販売履歴」テーブルの「顧客ID」フィールドが「多」の側です。 どちらのテーブルを使用しても結果は同じなのですが、 選択クエリを作成するときに、上記のように、同じフィールドを持テーブルが2つありリレーションシップを 設定している場合は、どちらのテーブルを使わないといけないというような決まりはあるのでしょうか? どちらを使用しても構わないのでしょうか。 特に、決まりがない場合は、一般的には、どのように設定されているのでしょうか?
- 締切済み
- その他(データベース)
- Accessのクエリ作成について
クエリを作成する際の、テーブルの設定の仕方がよくわかりません。 たとえば、「顧客リスト」テーブルと「販売履歴」テーブルに、それぞれ「顧客ID」フィールドがあり、「顧客ID」フィールドがリレーションシップで設定されているとします。 新たに、選択クエリを作成し、そのクエリに、「顧客ID」フィールドを設定するときに、どちらのテーブルの「顧客ID」フィールドを設定するかがわかりません。 ちなみに顧客IDフィールドには、リレーションシップを設定していて、1対多の設定をしています。 「顧客リスト」テーブルの「顧客ID」フィールドが、「1」の側で、 「販売履歴」テーブルの「顧客ID」フィールドが「多」の側です。 どちらのテーブルを使用しても結果は同じなのですが、 選択クエリを作成するときに、上記のように、同じフィールドを持テーブルが2つありリレーションシップを 設定している場合は、どちらのテーブルを使わないといけないというような決まりはあるのでしょうか? どちらを使用しても構わないのでしょうか。 特に、決まりがない場合は、一般的には、どのように設定されているのでしょうか?
- 締切済み
- その他(データベース)
- Access2013のリレーションシップについて
Access2013を勉強しています。 リレーションシップについて参考書(2冊)を見ていて疑問を持ったのですが、 二つのテーブルでリレーションシップを定義したいそれぞれのフィールド名は同じ名前だとうまくいかないのでしょうか?参考書では、値は同じ(例えば1、2、3・・・)は同じなのにフィールド名は微妙に違う名前をつけているのですが(例えばテーブルAでは顧客IDでテーブルBでは取引先ID)・・・ 宜しくお願いします。
- ベストアンサー
- その他MS Office製品
お礼
ありがとうございました。