![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.2ベストアンサー
- 回答日時:
>どのような項目にインデックスを定義すると、効果が高いですか?
カーディナリティ(=cardinality,基数,要素の数)が高いものに設定するのが効果的です。
高いもので最たる物は、プライマリーキー(主キー)になります。
>複数のインデックスが定義されていた場合に、
>使用するインデックスがどのようにして選択されるのでしょうか?
オプチマイザが判断するコストが低い順です。
このコストが低いければ、インデックスがあっても使用されないこともあります。
インデックス1(a,b)、インデックス2(b,a)とあったとして、
条件がbに対してだけであれば、インデックス2が使用されますが、
インデックス1しかない状態であれば、インデックスはまず使用されません。
それは、インデックス1がbに対して索引にはならないからです。
では、使用される組み合わせ全てのインデックスを持てば効率的かといえば、
そうはなりません。
確かに照会では効率が上がるかもしれませんが、更新では効率が落ちてしまします。
さらに、物理的な資源を消費することにもなります。
No.1
- 回答日時:
辞書を思い浮かべてください。
そうしたら、次は辞書から単語を探すときのことを考えてください。その単語をさがすときに、「あー50音順でよかった!」と思えるような単語の探し方をするのであれば、その探し方はインデクスの有無が検索速度に大きく影響するような探し方です。
逆に「なんだよ、50音順でも全然意味ないよ」と思えるような単語の探し方であれば、その探し方はインデクスの有無が検索速度に影響しないような探し方です。
2つ例を挙げます。
(1) 辞書から「検索」を調べるとします。その読み【けんさく】を辞書から探す場合、まず「か」の見出しを探して、次に「け」の前後を探して、さらに絞り込んで「けんさく」のページを開きますよね。
もし50音順でなかったら、「けんさく」にたどり着くのは大変です。こういう検索であれば、インデクスはとても役に立つということです。
(2) 辞書から「索」で終わる単語を調べるとします。
この場合、辞書の最初のページから最後のページまで、全部舐めるように調べる以外に方法がありませんから、50音順である必要が全くありません。こういう検索であれば、インデクスは全く役に立たないということです。
イメージつかめましたでしょうか。
次に複数あるインデクスから使用するものを選択する方法ですが、これはSQL Server自体がいくつかの評価基準をもっていて、それに照らして選択します。
例えば、カラムaについての完全一致を条件として検索する場合、まずaが含まれるインデクスがあるかどうかを調べます。
それが複数ある場合、次はaを含み、なおかつselectが返すカラムを全部含むようなインデクスがあるかどうか調べます。
それでも複数ある場合は・・・この先はちょっと知らないのですが、おそらく最小サイズのインデクスを選ぶのだと思います。必要なデータがすべて含まれていることが確かであれば、サイズが小さいほど検索速度の面で有利だからです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SEO 検索エンジンにインデックスされない 3 2023/02/20 08:59
- 外国株 インデックス投資は、実は罠がある、バンガード社が、ウオール街の ランダムウオーカーとか、宣伝活動した 2 2023/01/06 22:08
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- 不動産投資・投資信託 インデックス投資信託の信託報酬が低い物へのスイッチについて 5 2022/08/17 18:09
- 不動産投資・投資信託 eMAXIS Slim S&P500で、インデックスが下がったのに基準価額が上がる、又はその逆の挙動 1 2023/01/25 17:58
- その他(年金) 企業型確定拠出年金(DC年金)について教えてください。 昨年からDC年金を初めて2年目になります。 4 2023/08/21 09:55
- Visual Basic(VBA) 【VBAで、On Error が効かない】 3 2022/06/09 10:08
- 外国株 【至急】30代女性です。企業型DCのスイッチングの件で聞きたいことがあります。 入社して8年間ほど制 3 2022/08/19 23:09
- 外国株 お金を守るための3カ条 1. 安く買って、高く売る 2. 商品はまだ割安 3. 初心者はインデックス 1 2023/01/06 23:12
- SEO Googleで会社名を入れて検索するとホームページが表示されるようにしたい 4 2022/09/06 23:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
主キーにインデックスは貼らな...
-
インデックスの再構築の意味っ...
-
インデックスがすぐに壊れます…
-
画像の赤丸で囲っている、角丸...
-
[ BETWEEN ] vs [ >= AND <= ]
-
ビューにインデックスを設定で...
-
「マスタ」と「テーブル」の違...
-
Accessにインポートしたら並び...
-
SELECT時の行ロックの必要性に...
-
sqlserverで集計結果をUPDATEし...
-
ACCESS2007 フォーム 「バリア...
-
Access VBA Me.Requery レコー...
-
ACCESSのSQLで、NULLかNULLでな...
-
SELECT文でのデッドロックに対...
-
クエリのキャンセルがいつにな...
-
ACCESS 一つのフィールドに複...
-
Accessでクエリを完了できませ...
-
Access 1レコードずつcsvで出力...
-
データの二重表示の原因
-
2つの項目が重複するレコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[ BETWEEN ] vs [ >= AND <= ]
-
主キーにインデックスは貼らな...
-
【SQLServer】IS NULLのパフォ...
-
ビューにインデックスを設定で...
-
mysql IN句に1データだけ指定...
-
インデックスの再構築の意味っ...
-
コマンドプロンプト エラー
-
年と月が別カラムの場合のSQL
-
投資信託を初めて購入しようと...
-
コクヨ タイトルブレーンでイ...
-
数学でunprimedとは何を意味し...
-
ホームページがGOOGLEにインデ...
-
テキスト項目255ケタのメリット...
-
複数のDBでjoinする場合のindex...
-
500Gのテキストファイルから全...
-
サーバ負荷を抑える大量データ...
-
毎月10万円投資資金があるとし...
-
indexの使用頻度を調べる方法
-
SQL Serverの容量見積りについて
-
outlook2007 検索できないんです
おすすめ情報