2011-02-11 4 views
1

言語変換を含むテーブルがあります。それは30の言語のための30列を持っています。Select文が動的に生成される30列のテーブルのインデックスを作成する方法

私の要件は、すべての列から特定の単語(「こんにちは」など)を検索することです。

私は動的SELECT文の作成

:{英語= "hello" を ORフランス語= "hello" を ORドイツ= "こんにちは"}内部

書言語 から

選択*を{}は動的に生成されます。

このようなテーブルのインデックスを作成する必要がある場合、どうすればよいですか?

30個の列すべてに対して1つのインデックスを作成するか、各列ごとに30個のインデックスを作成する必要がありますか?

より良いオプションをお勧めします。

答えて

3

30個の列を持つべきではありません。言語名の列を含む表と単語の列と30個の行を関連付けるIDを使用する必要があります。その後、単にWORD = 'hello'を照会することができます。

30個の列を絶対に保持する必要がある場合は、30個のインデックスを作成する必要があり、クエリのパフォーマンスは30分遅くなります。

+0

お寄せいただきありがとうございます。私はあなたが言っていることを理解していますが、特定の建築上の問題のために、私たちはそれを行うことができませんでした...今は30のコラムがあります。 – meetpd

+1

これは非常にスマートなアプローチです。あなたのクエリははるかに高速になり、あなたはフィールドの数によって制約を受けます。 – jerebear

+0

@amccauslが示唆しているように、基礎となるテーブル構造を変更し、残りのシステムで同様の30列の結果を表示できます。 –

0

私は[id、lang、value]を含む2番目のテーブルを作成し、idとvalueでインデックス付けします。

0

30個の列がすべて必要な場合は、各列を個別に索引付けする必要があります。

+0

Select文を使用してクエリを実行すると検索パフォーマンスが向上しますか? – meetpd

+0

インデックスなしでクエリを実行するのと比較してですか?はい、確かです。しかし、行の挿入は遅くなります。 – nicolaskruchten

関連する問題