LoginSignup
0
0

More than 1 year has passed since last update.

インデックスの効果が出るケースの検証

Posted at

インデックスとは

目的のレコードを効率よく取得するための方法です。
インデックスは探すためのキーとなる値とレコードの場所を示すポイントでできています。

検証環境

Windows10
SQL Server2019

検証するケース

この記事では一般的に効果が出ると言われている以下の2ケースを検証します。
・少量データを検索する場合
・インデックスが作られている列のデータの種類が多い場合

少量データを検索する場合の検証

検証内容

・レコード数100万件
・実行前にキャッシュクリア
・インデックスあり・なしの状態をそれぞれ5回ずつ実施して、平均値を比較
・それぞれのデータ数が検索でヒットするようなデータを用意(1件、10件、25件、50件、100件、1000件、10000件)

検証

検索ヒット数 インデックス 1回目 2回目 3回目 4回目 5回目 平均 改善率
1件 0.162 0.109 0.109 0.140 0.109 0.1258
10件 0.117 0.109 0.113 0.111 0.108 0.1116
25件 0.113 0.117 0.130 0.110 0.107 0.1154
50件 0.127 0.119 0.113 0.138 0.126 0.1246
100件 0.133 0.114 0.131 0.142 0.132 0.1304
1000件 0.133 0.131 0.128 0.133 0.137 0.1324
10000件 0.156 0.153 0.150 0.144 0.143 0.1492
1件 0.038 0.049 0.047 0.045 0.034 0.0426 66.14%
10件 0.048 0.048 0.034 0.054 0.050 0.0468 58.06%
25件 0.052 0.047 0.054 0.057 0.038 0.0496 57.02%
50件 0.060 0.046 0.064 0.049 0.062 0.0562 54.90%
100件 0.056 0.052 0.068 0.051 0.055 0.0564 56.75%
1000件 0.084 0.059 0.066 0.075 0.064 0.0696 47.43%
10000件 0.094 0.104 0.094 0.098 0.113 0.1006 32.57%

インデックスが作られている列のデータの種類が多い場合の検証

検証内容

・レコード数100万件
・実行前にキャッシュクリア
・インデックスなしとありを5回ずつ実施し、平均値を比較
・それぞれのデータ種類数がヒットするようなデータを用意(1種類、10種類、100種類、1000種類、10000種類、100000種類、1000000種類)

検証

データ種類数 インデックス 1回目 2回目 3回目 4回目 5回目 平均 改善率
1種類 (×1000000件) 3.523 3.458 3.600 3.524 3.466 3.514
1種類 (×1000000件) 3.259 3.397 3.384 3.381 3.625 3.409 2.99%
10種類 (×100000件) 0.395 0.401 0.395 0.388 0.399 0.396 88.74%
100種類 (×10000件) 0.102 0.099 0.090 0.102 0.087 0.096 97.27%
1000種類 (×1000件) 0.051 0.057 0.053 0.051 0.052 0.053 98.50%
10000種類 (×100件) 0.045 0.036 0.072 0.061 0.045 0.052 98.53%
100000種類 (×10件) 0.020 0.038 0.036 0.041 0.040 0.035 99.00%
1000000種類 (×1件) 0.032 0.039 0.040 0.020 0.024 0.031 99.12%

まとめ

・大量データを検索する場合よりも、少量データを検索する場合の方が効果が高い
・データ種類が少ない項目よりも、多い項目にインデックスを作成する方が効果が高い
・項目数が10種類から効果がかなり大きくなる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0