0

SQLで特定のキーワードの高速テーブル列を検索する方法について質問があります。

私は3つのテーブルを持っています。

Table 1 has Makes

MakeID MakeName

Table 2 has Models

ModelID MakeID ModelName


Table 3 has Cars and Relationship to Table 1 and Table 2

CarID MakeID ModelID

アイデアは、エンドユーザーが「ホンダ」のような検索フィールドにキーワードを入力することです。また、MakeNameとModelNameにhondaという単語が含まれている表3のすべての車を返す必要があります。

What I do is I select from Table 3 and join on Table 1 and Table 2 Where clause MakeName or ModelName like '%' + keyword + '%', also tables have indexes.

それが最も効率的な方法かどうかはわかりません。表3には30万台の車が含まれているため、すべての表を検索するには時間がかかります。

検索を高速化する方法はありますか?どんなアイデアでも検索を改善することは高く評価されています。たぶん、情報を部分的に(検索によって返されたデータのみ)別のテーブルにミラーリングし、メインテーブルの代わりにクエリしますか?

4

1 に答える 1

0

簡単な方法:

  1. インデックスがあることを確認してください
  2. 表 1 と表 2 を別々に検索し、限られた数の結果を ID として取得します
  3. 表 3 を次のようにクエリします。 select * from Table3 where modelId in (list of id's) or makeId in (list of Id's)

言い換えれば、結合を避ける

高度な方法: 全文索引作成のセットアップ

于 2012-09-21T14:15:36.160 に答える