No.3ベストアンサー
- 回答日時:
>データが平均的な分布の場合インデックスを使うと遅くなるとあるのですが、
>インデックスが有利に働くのはカーディナリティがどのくらいの時からなのでしょうか?
サーバスペック次第ですが、以前自分で検証したところでは
全レコードの約10%がヒットする場合にフルスキャンと互角となりました。
(=インデックスで余計なディスクを使うだけ無駄)
データを読み込むだけのサイズでただ比較すると、1/8というのを見た記憶があります。
ということで、10%(1~10)位ではインデックスの効果は期待できないです。
一致するデータが約10%を超えるものはフルスキャンが速くなります。
また、
総レコード数が数万件程度の小さなテーブルの場合もインデックスは、ただの足かせになる可能性があります。
※レコードサイズの大小によりインデックスが有効な場合もあります。
No.2
- 回答日時:
CHAR(1)/VARCHAR(1)における、実サイズは1byte
NUMBER(1)は、2byte
恐らくCHAR系の方が有利と思われます。
しかし、数千万レコード程度なら誤差の範囲で済むと思います。
速度ではなくデータドメインに適したデータタイプを使用すべきです。
また、
データが平均的な分布であれば、1~6ではカーディナリティが低すぎますので
インデックススキャン(B-tree)を使用すると逆に遅くなると思います。
回答ありがとうございます。
データ件数は100万件程度なので今回はデータの型は
考えない方向でいきたいと思います。
>データが平均的な分布であれば、1~6ではカーディナリティが低すぎますので
>インデックススキャン(B-tree)を使用すると逆に遅くなると思います。
データが平均的な分布の場合インデックスを使うと遅くなるとあるのですが、インデックスが有利に働くのはカーディナリティがどのくらいの時からなのでしょうか?
今回のデータは平均的な分布なので気になっています。
No.1
- 回答日時:
インデックスを使用して検索するときは
インデックスを検索
↓
データの入っている行の rowid を取得
↓
テーブルの rowid を使ってデータを取得
なので今回外の場合はデータ型は検索速度に与える影響はないと思います。
データ件数が多くて必ず 1~6 のどれかが入っていて検索速度を向上させたいならビットマップインデックスも考えてみてはいかがでしょうか?
回答ありがとうございます。
影響がないとのことなので、今回は気にしないようにすることにしました。
とりあえず、ビットマップインデックスを使ってこれから検証してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロVBAのフォルダ階層別で検索の方法 4 2022/04/03 23:23
- Excel(エクセル) ExcelのVLOOKUP関数 7 2022/08/23 06:46
- その他(SNS・コミュニケーションサービス) Yahoo!とGoogle検索のしくみの違いを教えてください 2 2022/08/14 01:53
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- X(旧Twitter) Twitter検索から除外 1 2023/08/18 11:00
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- SEO 検索エンジン反映遅い 1 2022/06/04 07:35
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- 邦楽 曲名、歌ってる人(女性)が分かりません! 1 2023/06/09 21:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Viewにインデックスは張れ...
-
目的のインデックスが使用され...
-
データ表示順序
-
SQLの速度を調べるには…
-
索引の再構築をすべき?
-
SQL*LOADER実行時の...
-
列が255以上のCSVファイルをAcc...
-
PL/SQLでテーブル名に変数を使...
-
postgreSQLのint型は桁数指定が...
-
SQLでスキーマ名(所有者名)の...
-
【Access】外部結合を行う前に...
-
ORA-00959: 表領域'****'は...
-
ACCESS 複数テーブル・複数フィ...
-
SQL2005 のクエリ文について
-
複数テーブルのUPDATE
-
複数あるAccessのテーブルを一...
-
チェックボックスから、データ...
-
テーブルからのselectにおいて...
-
カラムの存在チェック
-
SQLite C/C++ でのテーブル数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
SQL*Loaderで、データを加工し...
-
アナライズとインデックス作成...
-
可変個数のデータはどう納める?
-
SQL*LoaderとInsertの違いについて
-
インデックス作成後アナライズ...
-
主キー以外の項目にNotNull制約...
-
文字列中のスペースを排除する...
-
テスト環境と本番環境で、DBか...
-
OracleTextの索引再構築について
-
データ表示順序
-
統計情報について
-
SQLの処理速度改善にむけて
-
論理読み込みブロック数とは?
-
Wordで複数の索引を作りたい
-
索引の再構築をすべき?
-
IN 句ではインデックスが使用さ...
-
該当データが存在しないときに...
-
PervasiveSQL (Btrieve) で、デ...
おすすめ情報