テーブル内の 2 つの列に対して部分検索を実装する最良の方法を確認しようとしています。目的は、この検索をできるだけ迅速に実行することです。
私たちの問題は、データベースが SQL Azure でホストされていることです。FullTextIndexing をサポートしていません。CHARINDEX()
これは、SQL で使用できるネイティブ コマンドはとだけであることを意味しますLIKE '% %'
。
純粋な T-SQL で実行する場合のクエリの構造は次のようになります。
DECLARE @SearchTerm VarChar(255) = 'Luke'
SELECT AU.UserID,
AU.FirstName,
AU.Surname
FROM dbo.Users AU
WHERE AU.FirstName LIKE '%'+@SearchTerm+'%'
OR AU.Surname LIKE '%'+@SearchTerm+'%'
また、Lucene を使用する機能も利用できます。既に Windows Azure の Worker ロールにセットアップしていますが、データベース内と Lucene 内の両方でデータの整合性を維持する必要があります。
私が知りたいのは:
LIKE
上記で使用しているものよりも T-SQL で検索を実行するためのより良い方法はありますか- 姓と名の両方を含むテーブルに計算列を追加すると、クエリのパフォーマンスが向上しますか?
- あるいは; Lucene に移動する場合。読み取りパフォーマンスは、上記のクエリよりもはるかに優れていますか? (これに関して、現在
dbo.Users
テーブルには10,000行未満があります) - ドアを開け放します。ロード全体を簡単にするために、まだ検討していない方法はありますか?