2

アルファベットのハッシュタグ (#example、#alsoAnExample、#this-is-not-an-example) を含む任意のテキストを含む列を持つソース テーブルがある場合、SQL サーバーでインデックス付きビューを作成するには何が必要ですか?

ハッシュタグ正規表現の定義:

/\B#\w*[a-zA-Z]+\w*/

望ましいビューの出力例:

PostId     |    Tag
   1           example
   1           alsoAnExample
   2           yetanothertag

これにより、挿入時に通常のテーブルのエントリを作成する責任からアプリケーション層が取り除かれ、タグ付けの知識がなくても他のソースからデータを入力できるようになります。

これが可能であれば、ビュー インデックスを頻繁に更新する必要があるため、挿入 (Posts テーブルは大量の挿入が行われる) が大きな負担にならないようにすることはできますか。

4

1 に答える 1

3

行ごとに複数のハッシュ タグを使用できるため、計算された列のインデックスだけを使用することはできません。代わりに、概念的に必要なのは、ハッシュ タグを計算するテーブル値関数をクロス適用したベース テーブルのインデックス付きビューです。私は SQL Server でそれを実現したいと思っていますが、残念ながら、インデックス付きビューはサポート対象が非常に限られています。ユースケースではそれらを忘れてください(理由を理解するには、オンラインの本で制限を調べてください).

代わりに、(PostId INT PRIMARY KEY, Tag NVARCHAR(400) PRIMARY KEY, ...または類似の形式の) ハッシュ タグを保持する別のテーブルを作成することをお勧めします。アプリケーション層で、またはトリガーを使用して、そのテーブルを維持します。

バッチ更新をバックグラウンドで実行できるように、テーブルを遅延して維持することもできます。もちろん、これはアプリが古いデータを許容する必要があることを意味し、開発作業が増えることを意味します。

于 2013-10-25T21:15:49.053 に答える