4

ウィキペディアのフォーム: http://en.wikipedia.org/wiki/Index_(データベース)

一部のデータベースでは、関数または式にインデックスを作成できるようにすることで、インデックス作成の機能を拡張しています。たとえば、upper(last_name) にインデックスを作成すると、last_name フィールドの大文字バージョンのみがインデックスに格納されます。サポートされる場合がある別のオプションは、「フィルター処理された」インデックスの使用です。この場合、インデックス エントリは、条件式を満たすレコードに対してのみ作成されます。柔軟性のさらなる側面は、組み込み関数の組み合わせから形成された式だけでなく、ユーザー定義関数のインデックス付けを許可することです。

次のような柔軟なインデックスをサポートするデータベースは何ですか:

  • 次のような計算列: (col1 + col2) * 100
  • フィルタリングされたインデックス。
  • ユーザー定義関数の索引付け。

この機能の既知の用語は何ですか?

4

3 に答える 3

1

Oracle では、関数ベースのインデックスと呼ばれます。

フィルタリングの場合、フィルターが一致する場合は値を返し、一致しない場合は null を返す関数を作成するのは難しいかもしれません。null は btree インデックスに格納されないため、インデックスは基本的にフィルター処理されます。クエリで同じ関数を使用していることを確認する必要があります。

計算列とそのインデックスを作成できるSQLサーバーを信じています。

于 2010-08-29T20:26:51.773 に答える
0

SQL Server 2000+ (少なくとも) は、関数ベースの列と計算列のインデックスをサポートしています。関数のインデックスは、関数のインデックス付きビューを使用して複製できます。

いつものように条件がありますが、主に決定論に関するものです (これはおそらく普遍的です)。

SQL Server 2008+ にはフィルター処理されたインデックスがあります。

私の知る限り、特別な用語はありません。それらは単なるインデックスです。

于 2010-08-29T21:04:03.307 に答える
-1

私の知る限り、すべての主要な RDBS がこの機能をサポートしています。個人的には MySQL と PostgreSQL で使用しましたが、MSSQL と Oracle で使用できなかったらショックです。

残念ながら、私はこれを表す特別な用語を知りません。

于 2010-08-29T20:26:32.587 に答える