0

多数の読み取りがあり、挿入もあるが、更新も削除もほとんどないという成果があるとします。

少数のオプションを持つ値を格納する 2 つの列があります。カテゴリ [バナナ、リンゴ、オレンジ、ナシ] とステータス [完了、進行中、甘やかされた、破棄された、または OK] を考えてみましょう。
最後に、所有者の姓の列があります。


注:
時々カテゴリで検索し、その他はステータスで検索します。
いずれの場合も、姓が検索に使用されます。
私は常にカテゴリ/ステータスで完全一致を実行しますが、姓から始めます.

一般的なクエリの例:

SELECT * FROM fruit_table WHERE category='BANANA' and last_name LIKE 'Cool%'
SELECT * FROM fruit_table WHERE status='Spoiled'  and last_name LIKE 'Co%'
SELECT * FROM fruit_table WHERE category='BANANA' and last_name LIKE 'smith%'




応答時間が短くなるように、どのように準備すればよいですか?
インデックスは役に立ちますか (列の値がまったく分散していないことを考慮して)?
ここでビットマップインデックスが役立つでしょうか?
パーティショニングはどうですか?

最後に、タイトルについてお詫び申し上げます。適切に定式化する方法がわかりませんでした。

4

1 に答える 1

1
  • ビットマップ インデックスは、利用可能な選択肢の数が限られているアイテムに非常に役立ちます。
  • 標準の B ツリー インデックス (または SQL Server では非クラスター化) は、last_name 列に対して適切に機能します。
    簡単なので、最初にこの 2 つを実行してから、どのように機能するかを確認します。

一般に、時期尚早に最適化することは悪い習慣です。ただし、インデックスを追加すると、それほど労力をかけずに速度を上げることができます。Oracle のインデックスの詳細については、この質問をお読みください。

于 2013-04-25T13:29:07.597 に答える