0

2つの質問があります。

  1. Integer文字列値の型列ではなく、型列でクラスター化インデックスを選択する必要がある場合、それは意味がありますか?

なんで?

クラスター化インデックスは、INSERTが処理されるたびにページデータの並べ替えを引き起こします。これは、新しい行がインデックスの最後に追加されず、中央に挿入されるためです。

私は正しいですよ?Integerタイプ列のクラスター化インデックスを選択する他の理由はありますか?または私は間違った方向に動いていますか?

  1. %...%以下のクエリのように文字列を検索する必要がある場合

    Select Column1 From Table1 Where Column1 Like '%SomeVal%'
    

これについて次の質問があります。

  1. %....%上記の状況で使用するのは理にかなっていますか?
  2. クラスター化されたインデックスを配置してColumn1から、%....%
  3. フルテキストインデックスを選択する必要がありますか?もしそうなら、なぜ私は全文索引よりも全文索引を好むべき%...%ですか?
4

1 に答える 1

4
  1. はい、SQL Server (および一般的なコンピューター) は、テキストのリストよりも数値のリストの方が高速です。つまり、通常、WHERE FirstName = 'BOB' よりも WHERE ID = 3 のレコードを検索する方が高速です。システムがどちらか一方を追跡するように設定されている場合、これはうまく機能します。たとえば、ユーザーが ProductID または ProductName を保存するように選択できる製品をクリックすると、ProductID がより速くプルされます。ただし、常にタイトルで映画を探しているように、その WHERE 句に含まれる唯一の列がテキスト フィールドである場合は、その列にクラスター化インデックスを配置する方がよいでしょう。原則として、クラスタ化インデックスを含む整数 ID フィールドを作成し、別のフィールドに非クラスタ化インデックスを配置しますが、実際には状況によって異なります。

  2. FTS は単語ベースですが、ワイルドカード (%) はパターン ベースです。そのため、テキスト フィールドで「パトリシア」を検索する必要がある場合は、おそらく FTS が最適ですが、「Pat%」を検索して検索する必要がある場合は、FTS が最適です。 「Patrick」または「Pattie」または「Patricia」の場合、FTS はうまく機能しません。それが理にかなっていることを願っています。StackOverflow またはGoogleで「fts vs like」を検索すると、この問題に関するいくつかの議論が得られます。

于 2012-06-19T06:27:58.083 に答える