Access でテーブルを検索したり、特定のフィールドでレコードを並べ替えたりすることが多い場合は、フィールドのインデックスを作成することで、これらの操作を高速化できます。 Access は、ブック内のインデックスを使用するときにテーブル内のインデックスを使用します。データを検索 Access 、インデックス内のデータの場所を検索します。 主キーの場合など、一部のインスタンスでは、Access によって自動的にインデックスが作成されます。 場合によっては、自分でインデックスを作成することもできます。
この記事では、インデックスについて説明し、インデックスを作成するフィールドを決定する方法、インデックスを作成、削除、または変更する方法について説明します。 Access がインデックスを自動的に作成する条件についても説明します。
この記事の内容
注: ここで説明する方法を使用して Web データベース内のテーブルに対してインデックスを作成することはできません。 Web データベースのパフォーマンスは、Web データベースをホストしている SharePoint Server など、いくつかの要素のパフォーマンスに依存します。
インデックスとは
インデックスを使用すると Access によるレコードの検索と並べ替えの速度が速くなります。 インデックスには、インデックスを作成する対象の 1 つ以上のフィールドに基づくレコードの位置が保存されます。 Access では、インデックスから位置を取得した後、正しい位置に直接移動して、データを取得できます。 このように、インデックスを使用すると、すべてのレコードをスキャンするよりもはるかに高速にデータを検索できます。
インデックスを作成するフィールドを決定する
インデックスは 1 つ以上のフィールドを基準に作成できます。 頻繁に検索するフィールド、並べ替えるフィールド、複数のテーブル クエリで他のテーブルのフィールドに結合するフィールドについては、インデックスを作成することをお勧めします。 インデックスは、検索やクエリの高速化に役立ちますが、データを追加または更新するとパフォーマンスが低下することがあります。 インデックスが設定された 1 つ以上のフィールドを含むテーブルにデータを入力すると、レコードが追加または変更されるたびにインデックスを更新する必要があります。 追加クエリを使用したり、インポート済みレコードを追加してレコードを追加したりすると、追加先テーブルにインデックスがあると、パフォーマンスが低下する可能性が高くなります。
注: テーブルの主キーのインデックスは自動的に作成されます。
データ型が OLE オブジェクト型、集計型、または添付ファイル型であるフィールドのインデックスは作成できません。 その他のフィールドについては、次のすべての条件に該当する場合はフィールドのインデックス作成を検討してください。
-
フィールドのデータ型は、Short Text、Long Text、Number、Date/Time、AutoNumber、Currency、Yes/No、Hyperlink です。
-
フィールドに保存される値を検索する可能性がある場合。
-
フィールドの値を並べ替える可能性がある場合。
-
フィールドに異なる値を多数保存する可能性がある場合。 フィールドに含まれる多数の値が同じ場合、インデックスを作成しても、クエリはそれほど速くならない可能性があります。
複数フィールド インデックス
一度に 2 つ以上のフィールドを基準にして検索または並べ替えを頻繁に行う場合、そのフィールドの組み合わせに対してインデックスを作成できます。 たとえば、同じクエリの "ベンダー" フィールドと "商品名" フィールドに抽出条件を頻繁に設定する場合、両方のフィールドに対して複数フィールド インデックスを作成するのが理にかなっています。
複数フィールド インデックスでテーブルを並べ替える場合は、インデックスに最初に定義された最初のフィールドを基準にして並べ替えを行います。 複数フィールド インデックスを作成するときにはフィールドの順序を設定します。 この最初のフィールドに重複する値を持つレコードがある場合は、インデックスで次に定義された 2 番目のフィールドを基準にして並べ替えを行います。
複数フィールド インデックスには最大 10 個のフィールドを含めることができます。
インデックスを作成する
インデックスを作成するには、まず単一フィールド インデックスまたは複数フィールド インデックスのどちらを作成するかを決定します。 "インデックス" プロパティを設定して、単一フィールドに対してインデックスを作成します。 次の表は、"インデックス" プロパティに設定できる値を示します。
"インデックス" プロパティの設定 |
意味 |
---|---|
いいえ |
このフィールドに対してインデックスを作成しない (または既存のインデックスを削除する) |
はい (重複あり) |
このフィールドに対してインデックスを作成する |
はい (重複なし) |
このフィールドに対して一意のインデックスを作成する |
一意のインデックスを作成する場合、その値が既に別のレコードの同じフィールドにある場合は、このフィールドに新しい値を入力できません。 主キーについては一意のインデックスが自動的に作成されますが、他のフィールドで重複する値を禁止することをお勧めします。 たとえば、2 つの製品のシリアル番号が同じにならないよう、シリアル番号を保存するフィールドに対して一意のインデックスを作成できます。
単一フィールド インデックスを作成する
-
ナビゲーション ウィンドウで、インデックスを作成するテーブルの名前を右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
-
インデックスを作成するフィールドの [フィールド名] をクリックします。
-
[フィールド プロパティ] で [標準] タブをクリックします。
-
"インデックス" プロパティで、重複を許可する場合は [はい (重複あり)]、一意のインデックスを作成する場合は [はい (重複なし)] をクリックします。
-
変更内容を保存するには、クイック アクセス ツール バーの [上書き保存] をクリックするか、Ctrl キーを押しながら S キーを押します。
複数フィールド インデックスを作成する
テーブルの複数フィールド インデックスを作成するには、インデックスに各フィールドの行を組み込み、最初の行にのみインデックス名を指定します。 別のインデックス名を含む行になるまで、すべての行は同じインデックスの一部と見なされます。 行を挿入するには、行を挿入する位置で右クリックし、ショートカット メニューの [行の挿入] をクリックします。
-
ナビゲーション ウィンドウで、インデックスを作成するテーブルの名前を右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
-
[デザイン] タブの [表示/非表示] グループで [インデックス] をクリックします。
[インデックス] ウィンドウが表示されます。 空白行がいくつか表示され、インデックス プロパティが表示されるよう、ウィンドウのサイズを変更します。
-
[インデックス名] 列の最初の空白行に、インデックスの名前を入力します。 インデックス フィールドにあるいずれかのインデックスの名前を使用するか、別の名前を使用できます。
-
[フィールド名] 列で矢印をクリックし、インデックスに使用する最初のフィールドをクリックします。
-
次の行で、[インデックス名] 列を空白のままにし、[フィールド名] 列でインデックスの 2 番目のフィールドをクリックします。 インデックスに含めるすべてのフィールドを選択するまで、この手順を繰り返します。
-
フィールドの値の並べ替え順序を変更するには、[インデックス] ウィンドウの [並べ替え順序] 列で、[昇順] または [降順] をクリックします。 既定の並べ替え順は [昇順] です。
-
[インデックス] ウィンドウの [インデックス プロパティ] で、[インデックス名] 列にインデックスの名前が入っている行のインデックス プロパティを設定します。 次の表に従ってプロパティを設定します。
ラベル
値
プライマリ
[はい] の場合、インデックスは主キーです。
固有
[はい] の場合、インデックスのすべての値が一意である必要があります。
Null 無視
[はい] の場合、インデックス フィールドに Null 値を持つレコードはインデックスから除外されます。
-
変更内容を保存するには、クイック アクセス ツール バーの [上書き保存] をクリックするか、Ctrl キーを押しながら S キーを押します。
-
[インデックス] ウィンドウを閉じます。
インデックスを削除する
インデックスが不要になるか、またはパフォーマンスへの影響が大きくなりすぎると感じた場合は、インデックスを削除できます。 インデックスを削除する場合、インデックスだけを削除し、作成されたフィールドは削除しません。
-
ナビゲーション ウィンドウで、インデックスを削除するテーブルの名前を右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
-
[デザイン] タブの [表示/非表示] グループで [インデックス] をクリックします。
[インデックス] ウィンドウが表示されます。 空白行がいくつか表示され、インデックス プロパティが表示されるよう、ウィンドウのサイズを変更します。
-
[インデックス] ウィンドウで、削除するインデックスを含む行を選択し、Del キーを押します。
-
変更内容を保存するには、クイック アクセス ツール バーの [上書き保存] をクリックするか、Ctrl キーを押しながら S キーを押します。
-
[インデックス] ウィンドウを閉じます。
インデックスを表示および編集する
テーブルのインデックスを表示して、パフォーマンスへの影響を確認することや、特定のフィールドにインデックスが設定されていることを確認することができます。
-
ナビゲーション ウィンドウで、インデックスを編集するテーブルの名前を右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
-
[デザイン] タブの [表示/非表示] グループで [インデックス] をクリックします。
[インデックス] ウィンドウが表示されます。 空白行がいくつか表示され、インデックス プロパティが表示されるよう、ウィンドウのサイズを変更します。
-
目的に合わせて、インデックスとインデックス プロパティを表示または編集します。
-
変更内容を保存するには、クイック アクセス ツール バーの [上書き保存] をクリックするか、Ctrl キーを押しながら S キーを押します。
-
[インデックス] ウィンドウを閉じます。
インデックスの自動作成
Access では、インデックスが自動的に作成される場合があります。 たとえば、テーブルの主キーとして指定するフィールドには、インデックスが自動的に作成されます。
インデックスの自動作成の別のソースは、[Access のオプション] ダイアログ ボックスの [インデックスを自動作成するフィールド] オプションです。 [ID]、[キー]、[コード]、[番号] など、[インデックスを自動作成するフィールド] ボックスに入力された文字で始まるか終わる名前を持つフィールドのインデックスは自動的に作成されます。 現在の設定を確認または変更するには、次の手順に従います。
-
[ファイル]、[オプション] の順にクリックします。
-
[オブジェクト デザイナー] をクリックし、[テーブル デザイン] の [インデックスを自動作成するフィールド] ボックスの値を追加、編集、または削除します。 値を区切るには、セミコロン (;) を使用します。
注: フィールド名がボックスに表示されている値で始まるか終わる場合、フィールドのインデックスが自動的に作成されます。
-
[OK] をクリックします。
インデックスを追加するとさらに作業が必要になるため、データの追加または更新時にパフォーマンスは低下します。 したがって、[インデックスを自動作成するフィールド] ボックスに表示される値を変更するか、値の数を減らして作成されるインデックスの数を最小限に抑えることを検討してください。