2016-05-20 4 views
0

T1の列aT2の列bの2つの表を使用すると、列の合計にインデックスを適用できますか?T1.a + T2.b?私は最近、この索引に関係する質問を得て、それが可能かどうかという質問ではなく(私はそうではないと信じています)、むしろいくつかの例文を高速化します。 可能であれば、正確にインデックスを作成していますか? WHERE T1.a+T2.b = 3などのクエリや他の場合に役立つでしょうか?ありがとう!列の合計に対するSQLインデックス - それは可能ですか?

+3

インデックスは製品固有のものですが、dbmsを使用していますか? – jarlh

+0

この質問は、実装に依存せず、すべてのdbms-sに適用されると考えられていました。しかし、それは私が毎日使っていると信じているものだからです。 – Marcin

+1

しかし、それはすべてのdbmsには当てはまりません。 – jarlh

答えて

1

ほとんどの(すべてではありません)データベースシステムでは、という式の結果にインデックスを作成できるため、これらのシステムでは2つの列の合計でインデックスを作成できます。

WHERE T1.a+T2.b = 3などのクエリや他の場合に役立つでしょうか?クエリに完全に依存し、どのような計画コンパイラは、クエリを評価するために使用することを決定し

。 2つの列の合計をフィルタリングし、その基準を満たすレコードが比較的少ない場合は、インデックスが一致するレコードを見つけるために実行する必要があるスキャンの量を減らします。

1

SQL製品によっては、グループ化されたビューをインデックス化して、永続化されたサマリー値を取得することができます。それは他人のために遅く挿入と更新を犠牲にしてあなたのためのより高速な選択パフォーマンスにつながるものとして

しかし

これは、局所的な最適化(「なしフリーランチ」をグーグルない)です。

+0

それで、与えられたdbmsで可能であると仮定すると、そのインデックスは 'T1.a + T2.b = x'の' WHERE'節でクエリを高速化しますか?あるいは、それは他の場合に役立つのか、全く役に立たないのだろうか? – Marcin

関連する問題