3

Advantage式エンジンを使用するCDXテーブルとADTテーブルにインデックスを作成しようとしています。

これまでに試したコードは次のようになります。

CREATE INDEX IDX1 ON TBL1 (STR(SOME_NUMBER_FIELD,6)+DTOS(SOME_DATE_FIELD));

STR(SOME_NUMBER_FIELD,6)+DTOS(SOME_DATE_FIELD)SQLを使用して式でインデックスを作成することは可能ですか?

式を二重引用符、一重引用符、角かっこで引用してみました。

4

3 に答える 3

5

これを行うには、システム プロシージャsp_CreateIndexを使用できます。

execute procedure sp_CreateIndex( 'test', null, 'idx1',
           'str(empid,6)+dtos(doh)', null, 0, 0 );   
于 2011-01-07T16:01:00.260 に答える
1

マークの答えは的確です。

ADTの式インデックスで注意する必要があることの1つは、式にnull値があると、式全体の結果がnullになることです。これにより、開発者がCDXからADTに切り替える際に問題が発生することがあります。これは、ADTテーブルでNULL値がサポートされているためです。たとえば、empidまたはdohのいずれかがNULLの場合、上記の式の結果はNULLになります。

注意すべきもう1つの点は、特定の式インデックスがSQL最適化に使用できない場合があることです。主にSQLを使用してデータを操作する場合は、標準のSQL構文を使用してインデックスを作成することをお勧めします。

CREATE INDEX idx1 ON test( empid, doh )

サーバーは、CDXおよびADTインデックスに正しい式を使用するように処理します。また、インデックスは、データの選択を最適化するためにSQLエンジンで使用できます。

于 2011-01-10T17:29:45.880 に答える
1

スケルトン構文は

CREATE INDEX index_name ON table_name(column_name);

したがって、コードが機能するには 2 つのことが必要です。

  1. 式は、既存の列の名前に評価される必要があります。
  2. dbms は、列名で式を受け入れる必要があります。

ほとんどの dbms は列名の式を受け入れないと思います。しかし、式を評価して、代わりに有効な SQL 文字列を送信することもできます。

于 2011-01-07T16:04:42.583 に答える