DBのインデックスの使い方


TAKU  2007-07-21 23:07:17  No: 137002

一年ほど前からVB2005で簡単なアプリを作っています。

データベース本体はAccess2005でMDBファイルを作ってVBから操作しています。

コードの内容としてはSelect,Update,Deleteなどの基本的なことで済んで
いますので主にMSDNライブラリのサンプルから作りました。

ただ、最近件数が多くなってきて気になっている点があります。
Accessでテーブルを作るときに「インデックス」を「はい・いいえ」によ
り選択していますが、SQL文あるいはVBのコードではインデックスについて
記述したことがありません。
(そのようなプロパティがあるかどうかも確認していません)

能動的にインデックスを使うことはできるのでしょうか?
あるいはJET.Engineが常に最適な方法を考えてくれているのでしょうか?


  2007-07-22 21:10:27  No: 137003

DBのインデックスってどんなものかわかって質問してる?
いえ、こちらの勘違いという可能性もあるのですが、後からインデックスを作成するにはどうすればいいですか?という質問なのでしょうか?


TAKU  2007-07-23 06:22:19  No: 137004

>DBのインデックスってどんなものかわかって質問してる?

そう言われると「わかっていません」と答えるしかないです。

昔データベースをオープンするときにインデックスを明示的に宣言して、
一番目のインデックスの順番に処理が走っていたときのインデックスなら
理解はしていましたが、MDB形式では明示的に仕様インデックスを指示し
ませんよね?
たとえば生年月日・氏名のフィールドがあってSelect文を実行するときに
どちらのインデックスを使えば参照レコードが少なくて済むか、というこ
とをコードからは指定できないようなのでこのような質問をしました。

>後からインデックスを作成するにはどうすれば・・・
これに関しては初心者ですので
「AccessのIDE環境のテーブルデザインビューで、希望するフィールドの
  <インデックス>というところを<はい>にする」
という方法しか知りません。


もげ  2007-07-23 20:18:44  No: 137005

Jetの実行計画を取得することはできますが、
http://articles.techrepublic.com.com/5100-22-5064388.html
SQLServerやOracleのようにオプティマイザヒントを使用することはできません。
非効率なクエリを発行していないかどうか
と、以下の点も確認してみてください。
http://support.microsoft.com/kb/240434/ja


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加