2009-04-21 19 views
0

SQL Serverが文字列を比較して文字列を検索する方法(文など)に関する情報はありますか?私は、大きな文字列として情報を格納するのが効率的かどうかを判断する方法があるかどうかを調べようとしており、SQL Serverを使用して行の比較を行って一致を判断します。私はこれが潜在的に遅くなることを知っています(情報の各文字列は2400文字になります)が、文字列の比較方法を分かりやすくする必要があるので、その効率(または非効率性)を示すことができます。SQL Serverの文字列の比較

+0

1.フルテキストインデックスを計画していますか? 2.このタイプのソリューションで試したことがありますか? 3.どのような種類のデータを扱っていますか? 一般に、LIKEステートメントの使用は避けてください。この投稿は、動的SQLがフルテキストインデックスよりも優れている可能性があることを示しているようです: http://social.msdn.microsoft。com/forums/en-US/sqldatabaseengine/thread/c8734672-837d-4e63-92e4-76c58a368251/ –

+0

何が問題なの?どこの姓は 'Smi%'のようなsargableとどこ左(LastName、3)= 'Smi'ではない....絶対に何も間違っているような場合は、列の先頭を検索するとき – SQLMenace

+0

私はかなり確信しているフィールドの真ん中で400文字の長い文字列を検索するときによく似ています。 – kemiller2002

答えて

2

情報の各文字列は

ちょうど2400 2400の文字でしょうか?だからあなたはそこに固定幅のフィールドを持っていますか?あなたの時間を節約し、別の列に分割するだけです。あなたは後で自分自身に感謝するでしょう。

にはデータがある必要があります。にデータがある場合は、テスト用のデータベースをセットアップして両方の方法で試してみてください。少なくともシステム固有のデータがあります。

+0

データの性質上、私はそれを行うことはできません。私はそのアプローチについて考えましたが、データの全体的な価値を判断するために、束縛を強要することになりました。 2400は本質的に、一連のセットフラグを検索するために検索する必要のある大きなフラグセットです。本当に私が探しているのは、これが本当に非効率なことを示す情報です。 – kemiller2002

+0

私は思っています(知っている!)あなたは、挿入時に文字列を分割することは、検索や検索でそれを分割するよりもずっと速くなることがわかります。データベース設計の基本ルール:1列、1値。 –

+0

これは取引です。 dbaは、各charが1分の時間を表すことを望んでいます。利用可能な期間がどれくらいあるかを調べるために検索する必要があります。それを分割するということは、時間の長さの長さを把握するためにどの値を並べるかを決める作業が大量に必要になることを意味します。私はあなたが間違っていると言っているわけではありませんが、なぜ私はこれが悪い考えであるかを示すのに十分な情報です。私は問題にアプローチするために他のデータ構造を念頭に置いていますが、自分のアイデアを提示する前に彼の考えを反論する必要があります。 – kemiller2002

0

あなたは/広いインデックスが900バイトを超える長さにすることはできませんので、インデックスを作成することができなくなりますので、その中で検索すると遅くなります

私はジョエルCoehoornを示唆してにそれを分割するものだろう

あなたはまた、あなたが唯一の3行は、行あたり2400文字でページをPR保存することができますので、複数のテーブルにそれを分割したい場合があります

ているあなたは、SQLサーバーに適用することができ、フルテキスト検索索引があり、
0

検索エンジンのようなものに頻繁に使用されます。全文索引は、通常、検索のためのブール論理演算子を可能にする。

+0

私は個人的にSQL検索エンジンのバックエンドとしてのサーバーフルテキストインデックス。あなたはどんな例を知っていますか?私が知っているほとんどの実装では、Luceneやテキスト検索の実装用のカスタムコードを使用しています。 –

+0

StackOverflowはそれを使用します。 –

0

既に言及した追加情報です。 likeを使用して大きな文字列をフィルタリングする必要がある場合は、インデックスも使用されません(ワイルドカード%は検索文字列の最後にのみあります)。だから、それを避け、自分の分野でフィルタリングする必要がある部分を作ることが最善です。

0

MSDN記事全文検索については、LIKE述語で文字パターンを使用する方法について、以下のことが呼び出されています。

フルテキスト検索とは対照的に全文検索

にLIKE比較すると、LIKEのTransact-SQL述語は文字パターンでのみ動作します 。また、LIKE述部を クエリ形式のバイナリデータに使用することはできません。さらに、大量の の構造化されていないテキストデータに対するLIKEクエリは、同じデータに対する同等のクエリ のクエリよりもはるかに低速です。テキストデータの行の何百万もの に対するLIKE照会は、戻すには数分かかることがあります。 クエリは、返される行数に応じて に応じて、同じデータに対してわずか数秒で完了します。