タグ付けされた質問 「string-splitting」

2
charindex関数の長い文字列を分割/保存する最速の方法
1 TBの数字列があります。12文字の数字のシーケンスが与えられた場合、元の文字列(charindex関数)でこのシーケンスの開始位置を取得します。 SQL Serverを使用して1GBの文字列と9桁の部分文字列でこれをテストし、文字列をとして保存しましたvarchar(max)。Charindex10秒かかります。1 GBの文字列を900バイトのオーバーラップチャンクに分割し、バイナリ照合でchunkofstringを使用してテーブル(StartPositionOfChunk、Chunkofstring)を作成すると、インデックス作成に1秒未満かかります。10GB、10桁の部分文字列の後者の方法では、charindexが1.5分に上昇します。より高速な保存方法を見つけたいのですが。 例 数字列:0123456789-検索する部分文字列345 charindex( '345'、 '0123456789')は4を与えます 方法1:これを、1つの列で構成されるSQL Serverテーブルstrtableに格納しcolstr、実行できます。 select charindex('345',colstr) from strtable 方法2:または、元の文字列を分割することにより、テーブルstrtable2(pos、colstr1)を作成できます。2; 123 | 3; 234 asoそして、クエリを select pos from strtable2 where colstr1='345' 方法3:元の文字列をより大きなチャンクに分割することで、テーブルstrtable2(pos2、colstr2)を作成できます1; 01234 | 4; 34567 | 7、6789、次いで select pos2+charindex('345',colstr2) from strtable2 where colstr2 like '%345%' 最初の方法が最も遅いです。 2番目の方法では、データベースのストレージサイズが大きくなります。 方法3:バイナリ照合でcolstr2の長さを900バイトに設定し、この列にインデックスを作成すると、1GBの文字列と9桁の部分文字列の検索に1秒かかります。10GBの文字列と10桁の部分文字列の場合、istには90秒かかります。 これをより速くする他のアイデア(おそらく、文字列を使用することによって、文字列は長整数の数字で構成されます...)? 検索では常に、1 TBの数字列の12桁の部分文字列が検索されます。SQLServer 2017 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.